首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

一个有难度的SQL查询写法

2013-01-28 
一个有难度的SQL查询求助写法有难度的查询,向各位高手求助:有2个SQL表,1个是【参数表】,1个是【数据表】,需要

一个有难度的SQL查询求助写法
有难度的查询,向各位高手求助:有2个SQL表,1个是【参数表】,1个是【数据表】,需要根据【参数表】的约定,生成【分类结果】

说明:
1、如果某笔数据即符合参数表的多条记录,以【分类】字段的最大的那条记录为准,如果【分类】字段也相同,以【顺序】字段最大的为准。
2、参数表有几百条记录,数据表有10万条记录,希望能够在尽量短的时间查询到结果。

参数表:
分类金额1金额2类型1类型2 顺序
01010ab1
01119999ac2
02020ba3
0321999aa4

数据表:根据金额、类型1、类型2这3个字段,select出分类结果:
人员编号 姓名金额类型1类型2分类结果
001张三5ab01
002李四20aa03
003王五20bbnull

谢谢! sql查询
[解决办法]
002那行,为什么分类结果为03,
002的金额是20,而03分类的金额1 和金额 2 分别是 21 和999
[解决办法]

引用:
002那行,为什么分类结果为03,
002的金额是20,而03分类的金额1 和金额 2 分别是 21 和999

同问
,自己先把需求理清楚
[解决办法]
Select *,分类结果=(Select top 1 fl  From t_cashu as C Where C.lx1=J.lx1 And C.lx2=J.lx2 And C.JE>=J.JE1 And C.JE<=J.JE2 order by sx desc ) From t_jilu表 as J 
[解决办法]
引用
还要注明一下:参数表中,金额1、金额2、类型1、类型2,均有可能为NULL值,如果为NULL值,则视为可替代任意值。(例如假设 金额1、金额2、类型1、类型2 这4个字段均为NULL值,则所有的数据表都符合这条记录)


如果数据条件满足2个参数表条件 如何取?

select a.人员编号 ,a.姓名,a.金额,a.类型1,a.类型2b.分类 as 分类结果
  from 【数据表】 a 
   outer apply(select top (1) x.分类
                  from 【参数表】 x 
                  where isnull(x.类型1,a.类型1)=a.类型1
and isnull(x.类型2,a.类型2) = a.类型2
                         and a.金额 between isnull(x.金额1,a.金额) and isnull(x.金额2,a.金额)
                  order by x.类型1 desc ,x.类型1 desc ,x.金额1 desc ,x.金额2 desc
               ) b
[解决办法]
12楼正解!

热点排行
Bad Request.