我有一张表如下:
ID MARKET
2 INDIV
2 CPEINT
2 INDIV
2 INDIV
2 INDIV
2 INDIV
2 INDIV
5 INDIV
5 INDIV
5 CPEINT
5 INDIV
5 INDIV
5 INDIV
5 INDIV
5 INDIV
5 INDIV
我想要的是根据ID和MARKET中的前一行更新MARKET列中的记录。如果之前的市场是CPEINT且当前ID与之前的ID相同,则将当前市场替换为CPEINT。我正在寻找的输出将是:
ID MARKET
2 INDIV
2 CPEINT
2 CPEINT
2 CPEINT
2 CPEINT
2 CPEINT
2 CPEINT
5 INDIV
5 INDIV
5 CPEINT
5 CPEINT
5 CPEINT
5 CPEINT
5 CPEINT
5 CPEINT
5 CPEINT
我可以使用MERGE或UPDATE之类的东西来做这件事吗?
非常感谢!
答案 0 :(得分:3)
请尝试查询SQL服务器:
;with T as(
select
ROW_NUMBER() over (order by ID) RNum, *
From
YourTable)
update c set MARKET='CPEINT'
from T c join
(select a.RNum, a.ID
From T a LEFT JOIN T b on a.RNum=b.RNum+1
where a.ID=b.ID and b.MARKET='CPEINT')x on c.RNum>=x.RNum AND c.ID=x.ID
答案 1 :(得分:0)
这可能会也可能不会满足您的要求。
update yourtable
set market = 'CPEINT'
where id in
(select id
from yourtable
where market = 'CPEINT')
and market = 'MARKET'