作者cutekid (可爱小孩子)
看板Database
标题Re: [SQL ] MSSQL栏位自动取得上一笔的栏位
时间Tue Feb 13 16:47:51 2018
假设你 join 数张 table 得到的结果叫: result
;with tb1 as (
select t1.*,
case when t1.COLA = 'GOOD' then t1.ID else t2.ID end as COLB,
row_number() over (partition by t1.ID order by t2.ID desc) as num
from result t1 left join result t2
on t1.COLA != 'GOOD' and t2.COLA = 'GOOD' and t1.ID > t2.ID
)
select *
from tb1
where num = 1
※ 引述《Nowtreel (盗版陈金城)》之铭言:
: 资料库-MSSQL-2012
: 各位好
: 资料库新手想请教
: 目前组出一张表,有栏位ID ... COLA
: 是JOIN数张TABLE得到的结果
: 如下:
: ID ... COLA COLB
: ---------------------
: AA ... GOOD AA
: BB ... SOSO AA
: CC ... BAD AA
: DD ... TOOBAD AA
: EE ... GOOD EE
: FF ... GOOD FF
: GG ... NULL NULL
: HH ... GOOD HH
: II ... BAD HH
: JJ ... SOSO HH
: 现今希望能继续加入一栏COLB
: 逻辑是判断为
: 只要COLA是'GOOD',COLB就取ID值
: 只要COLA非'GOOD',COLB就取上一个COLA为GOOD的ID值
: 只要COLA为NULL,COLB就是NULL
: 请问有什麽方式可以做到吗?
: 谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.221.80.36
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Database/M.1518511673.A.C34.html
1F:推 Nowtreel: 看来能达到我想要的效果,感谢您 02/16 03:09