3

このようなテーブルがあります

 ItemsWithQuantity
 =================
 ID     Quantity
 ---------------
 x      4
 y      7

これに変換するビューまたはクエリを構築したい

ID
x
x
x
x
y
y
y
y
y
y
y

基本的にそれらをカウント解除し、すべての数量に対して一意の行を取得します。

MS SQL 2005 または 2008 でこれを動的に行う最善の方法は何ですか?

4

3 に答える 3

-1

ループでそれを行う方法は次のとおりです。外部テーブルやクロステーブル参照は必要ありません。

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 つのクエリからすべてを選択できます。

于 2013-08-02T15:39:40.060 に答える