Frage

Ich habe folgende T-SQL-Pivot-Abfrage.

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

Wenn ich diese laufen sie beide der Resultsets zurückkehrt ... ist es eine Möglichkeit, sie zu begrenzen nur die geschwenkt Ergebnismenge zurück?

Seth

War es hilfreich?

Lösung

Was "beide Result"? Sie sollten nur ein einziges Ergebnis von einem einzigen SELECT-Anweisung, PIVOT gesetzt bekommen oder nicht. Und die SELECT in der Unterabfrage ist keine zweite SELECT-Anweisung, es ist ein Tabellenausdruck (andere Sache), sollte es nur ihnen die Daten auf die größeren Aufruf SELECT-Anweisung zurück.

Hier ist die BOL Dreh Beispiel:

-- 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

Wenn ich ausführen dies die Adventureworks-Datenbank agains, ich nur eine Ergebnismenge erhalten, wie erwartet.

Wenn Sie immer mehr als ein Suchresultates dann entweder 1) diese Abfrage Teil eines größeren stoered Prozedur, die eine weitere Abfrage ausgeführt wird und dass andere Ergebnis Rückkehr gesetzt auch (so die gespeicherte Prozedur ändern), OR 2) Sie sind verwirrend etwas anderes (wie PRINT-Anweisungen) mit einer Ergebnismenge wird oder 3) es etwas ernsthaft falsch mit Ihren SQL Server oder Access-Tool ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top