はありがとうございます。注意すべきことは、何かを注文する必要があることです。おそらく、私が注文したものはあなたの状況に合っていないのですが、そこに何かが必要です。
IF OBJECT_ID('tempdb..#Test', 'U') IS NOT NULL DROP TABLE #Test;
create table #Test
(
Serial varchar(10),
code char(2)
)
insert into #Test values ('D03L30225', 'A1')
insert into #Test values ('D03L30225', 'A1')
insert into #Test values ('D03L30225', 'A1')
insert into #Test values ('D03L30225', 'A2')
;
with cte as
(
select rownum = row_number() over (order by Serial, code), Serial, code
from #Test
)
select curr.Serial, curr.code,
case
when curr.code <> prev.code then
1
else
0
end as 'DifferenceFlag'
from cte curr
left join cte prev on prev.rownum = curr.rownum - 1
SQL Server 2012以降を使用している場合は、LAG機能を使用できます。私たちはまだSQL Server 2008 R2です。だから最近同様のことをする必要がありました。私が上記の方法を見つけたのはhereです。
(1)あなたの質問を編集し、(質問が明確ではない)あなたが望む結果を提供します。 (2)SQLテーブルが*順序付けされていない*セットを表していることを認識していますか?列に順序が指定されていない限り、行に順序はありません。 –
重複したエントリを検索しますか? – bmsqldev
こんにちは、私は3番目の列を追加し、前のものから変更があった場所を探したいと思います。 3番目の列は、実際には、シリアル列とコード列の組み合わせの変更のインジケータになります。 – abs786123