一个有难度的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
[解决办法]
同问
,自己先把需求理清楚
[解决办法]
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
[解决办法]
如果数据条件满足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楼正解!