SQL语句高手请进入,单表查询,回答有用再加份

2025-04-13 15:37:05
推荐回答(2个)
回答(1):

select *,ROW_NUMBER() over(order by mcsj desc) as num from
(
select *,(mc2-mc3) as mcsj from
(
select d2.xh,d2.xm,yw2=d2.yw,sx2=d2.sx,zf2=d2.zf,mc2=d2.mc,
yw3=d3.yw,sx3=d3.sx,zf3=d3.zf,mc3=d3.mc from 
(
select * from chenji where ksz=2
)d2
inner join 
(
select * from chenji where ksz=3
)d3 on d2.xh=d3.xh
)t
)tt 
union all
select d3.xh,d3.xm,yw2=d2.yw,sx2=d2.sx,zf2=d2.zf,mc2=d2.mc,
yw3=d3.yw,sx3=d3.sx,zf3=d3.zf,mc3=d3.mc,mcsj=null,num=null from 
(
select * from chenji where ksz=3
)d3
left join
(
select * from chenji where ksz=2
)d2 on d2.xh=d3.xh where d2.mc is null

回答(2):

呃,我不会TAT
我感觉想光靠sql查询语句查到结果不太现实,因为你这个表虽然是单表,但冗余比较多,可能写个函数用游标会更好实现。