22,210
社区成员
发帖
与我相关
我的任务
分享
ASSNO PARTNO PARTNO2 PARTNO3 PARTNO4 PARTNO5 PARTNO6 USEQTY rid
---------- ----------- ------- ------- ------- ----------- ----------- --------------------------------------- --------------------
1964042101 1964042100S A B C NULL NULL 0.535 1
1964042101 6997C03420 NULL NULL NULL NULL NULL 0.535 1
1964042101 TPK00354 NULL NULL NULL NULL NULL 0.535 1
WITH list as(
SELECT ASSNO='1964042101',PARTNO='1964042100S',PARTNO2='A',PARTNO3='B',PARTNO4='C',PARTNO5=NULL,PARTNO6=NULL,USEQTY=0.535 UNION ALL
SELECT ASSNO='1964042101',PARTNO='TPK00354',PARTNO2=NULL,PARTNO3=NULL,PARTNO4=NULL,PARTNO5=NULL,PARTNO6=NULL,USEQTY=0.535 UNION ALL
SELECT ASSNO='1964042101',PARTNO='1964042100S',PARTNO2='A1',PARTNO3='B1',PARTNO4=NULL,PARTNO5=NULL,PARTNO6=NULL,USEQTY=0.535 UNION ALL
SELECT ASSNO='1964042101',PARTNO='1964042100S',PARTNO2='A1',PARTNO3='B2',PARTNO4=NULL,PARTNO5=NULL,PARTNO6=NULL,USEQTY=0.535 UNION ALL
SELECT ASSNO='1964042101',PARTNO='1964042100S',PARTNO2='A',PARTNO3='B3',PARTNO4=NULL,PARTNO5=NULL,PARTNO6=NULL,USEQTY=0.535 UNION ALL
SELECT ASSNO='1964042101',PARTNO='1964042100S',PARTNO2='A3',PARTNO3='B4',PARTNO4=NULL,PARTNO5=NULL,PARTNO6=NULL,USEQTY=0.535 UNION ALL
SELECT ASSNO='1964042101',PARTNO='6997C03420',PARTNO2=NULL,PARTNO3=NULL,PARTNO4=NULL,PARTNO5=NULL,PARTNO6=NULL,USEQTY=0.535
), datas as(
select *,rid=ROW_NUMBER()over(partition by PARTNO order by(case when partno6 is not null then 6
when partno5 is not null then 5
when partno4 is not null then 4
when partno3 is not null then 3
when partno2 is not null then 2
else 0
end) desc)
/*如有同层级有二个以上用DENSE_RANK()*/
from list
)
select *
from datas
where rid=1