0

我有以下 T-SQL Pivot 查询。

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

什么“两个结果集”?您应该只从单个 SELECT 语句(无论是否为 PIVOT)中获取单个结果集。并且子查询中的 SELECT 不是第二个 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)此查询是一个更大的存储过程的一部分,该过程正在执行另一个查询并返回另一个结果集(因此更改存储过程),或者 2)您混淆了其他东西(例如 PRINT 语句)作为结果集,或者 3)您的 SQL Server 或访问工具存在严重问题。

于 2009-08-16T17:49:53.820 回答