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 に答える