3

TSQL 2008 R2

特定の PO 番号に対して、それぞれ独自の一意の ID を持つ重複した品目があります。重複を削除する必要があります。各 PO 番号にいくつの重複があるかわかりません。#LineItems があるので、最初の (トップ) x(#lineIems) のライン アイテムのみが必要です。

私は次のようなテーブルを持っています:

LineitemID PO#     #LineItems
---------- ------- ----------
11111111   12345   3
22222222   12345   3
33333333   12345   3
44444444   12345   3
55555555   12345   3
66666666   12345   3
77777777   54321   2
88888888   54321   2
99999999   54321   2
10101010   54321   2
...  

次のようなテーブルが必要です。

LineitemID PO#     #LineItems
---------- ------- ----------
11111111   12345   3
22222222   12345   3
33333333   12345   3
77777777   54321   2
88888888   54321   2
...  

したがって、基本的には次のような方法があります。

DECLARE @top int = (SELECT TOP 1 FROM tblLineItems t WHERE t.PO# = @PO)

SELECT TOP (@top)
FROM tblLineItems

そして、PO#ごとにこれを行います

4

2 に答える 2

2
delete t from (select *, rank = row_number() over (partition by PO# order by lineitemid) 
               from table ) t 
where rank > #lineitems
于 2013-02-20T21:35:52.247 に答える