有难度的查询,向各位高手求助:有2个SQL表,1个是【参数表】,1个是【数据表】,需要根据【参数表】的约定,生成【分类结果】
说明:
1、如果某笔数据即符合参数表的多条记录,以【分类】字段的最大的那条记录为准,如果【分类】字段也相同,以【顺序】字段最大的为准。
2、参数表有几百条记录,数据表有10万条记录,希望能够在尽量短的时间查询到结果。
参数表:
分类 金额1 金额2 类型1 类型2 顺序
01 0 10 a b 1
01 11 9999 a c 2
02 0 20 b a 3
03 21 999 a a 4
数据表:根据金额、类型1、类型2这3个字段,select出分类结果:
人员编号 姓名 金额 类型1 类型2 分类结果
001 张三 5 a b 01
002 李四 20 a a 03
003 王五 20 b b null
谢谢!
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.类型2 b.分类 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楼正解!