Wie kann ich wieder nur eine Suchresultates von einer Pivot-Abfrage in SQL Server?
-
16-09-2019 - |
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
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.