このようなテーブルがあります
ItemsWithQuantity
=================
ID Quantity
---------------
x 4
y 7
これに変換するビューまたはクエリを構築したい
ID
x
x
x
x
y
y
y
y
y
y
y
基本的にそれらをカウント解除し、すべての数量に対して一意の行を取得します。
MS SQL 2005 または 2008 でこれを動的に行う最善の方法は何ですか?
このようなテーブルがあります
ItemsWithQuantity
=================
ID Quantity
---------------
x 4
y 7
これに変換するビューまたはクエリを構築したい
ID
x
x
x
x
y
y
y
y
y
y
y
基本的にそれらをカウント解除し、すべての数量に対して一意の行を取得します。
MS SQL 2005 または 2008 でこれを動的に行う最善の方法は何ですか?
ループでそれを行う方法は次のとおりです。外部テーブルやクロステーブル参照は必要ありません。
DECLARE @i INT = 1
DECLARE @counter INT
CREATE TABLE ##tempTable(
ID INT
)
WHILE @i<=(
SELECT COUNT(*) FROM ItemsWithQuantity)
BEGIN
SET @counter=(SELECT QuantityFROM(
SELECT ROW_NUMBER() OVER (ORDER BY ID DESC) RowNumber, * FROM ItemsWithQuantity) a
WHERE RowNumber=@i)
WHILE @counter>=0 BEGIN
INSERT INTO ##tempTable (ID) SELECT ID FROM(
SELECT ROW_NUMBER() OVER (ORDER BY ID DESC) RowNumber, * FROM ItemsWithQuantity) a
WHERE RowNumber=@i)
SET @counter=@counter-1
END
SET @i=@i+1
END
SELECT * FROM ##tempTable
アップデート
一時テーブルを使用すると、1 つのクエリからすべてを選択できます。