0

次の T-SQL ピボット クエリがあります。

SELECT AccountNumber, EventID, 
        CreateDate, [ITEMBOOK] AS ITEMBOOK, 
        [POSTER] AS POSTER
FROM
    (SELECT ProductID, Quantity, EventID,AccountNumber,CreateDate
    FROM #tmpStartupItems) ps
    PIVOT
    (
    SUM (Quantity)
    FOR ProductID IN
    ( [ITEMBOOK], [POSTER])
    ) AS pvt

これを実行すると、両方の結果セットが返されます...ピボットされた結果セットだけを返すように制限する方法はありますか?

セス

4

1 に答える 1

2

「両方の結果セット」とは何ですか? PIVOT かどうかに関係なく、単一の SELECT ステートメントから単一の結果セットのみを取得する必要があります。また、サブクエリの SELECT は 2 番目の SELECT ステートメントではなく、テーブル式 (別のもの) であり、そのデータをより大きな呼び出し側の SELECT ステートメントにのみ返す必要があります。

BOL ピボットの例を次に示します。

-- Pivot table with one row and five columns
SELECT 'AverageCost' AS Cost_Sorted_By_Production_Days, 
[0], [1], [2], [3], [4]
FROM
(SELECT DaysToManufacture, StandardCost 
    FROM Production.Product) AS SourceTable
PIVOT
(
AVG(StandardCost)
FOR DaysToManufacture IN ([0], [1], [2], [3], [4])
) AS PivotTable

これを AdventureWorks データベースに対して実行すると、予想どおり 1 つの結果セットしか得られません。

複数の結果セットを取得している場合は、1) このクエリは、別のクエリを実行し、他の結果セットも返す大規模なストアド プロシージャの一部である (ストアド プロシージャを変更する)、または 2) 他の何かを混乱させている ( PRINT ステートメントなど) 結果セットである、または 3) SQL Server またはアクセス ツールに重大な問題があります。

于 2009-08-16T17:49:53.820 に答える