2

我有一张如下表:

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 列中的记录。如果之前的 MARKET 是 CPEINT 并且当前 ID 与之前的 ID 相同,则将当前 MARKET 替换为 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 之类的方法来执行此操作吗?

非常感谢!

4

2 回答 2

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
于 2013-04-04T10:20:38.500 回答
0

这可能会也可能不会满足您的要求。

update yourtable
set market = 'CPEINT'
where id in 
(select id 
from yourtable
where market = 'CPEINT')
and market = 'MARKET'
于 2013-04-04T09:53:58.277 回答