2009-08-15 12 views
0

J'ai la requête T-SQL Pivot suivante.Comment puis-je retourner un seul jeu de résultats à partir d'une requête pivot dans un serveur 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 

Quand je lance ce qu'il revient à la fois des ... resultsets est-il un moyen de le limiter à revenir juste le résultat pivotée fixé?

Seth

Répondre

2

Qu'est-ce que "both resultsets"? Vous ne devriez obtenir qu'un seul ensemble de résultats à partir d'une seule instruction SELECT, PIVOT ou non. Et le SELECT dans la sous-requête n'est pas une seconde instruction SELECT, c'est une expression de table (chose différente), elle devrait seulement renvoyer ses données à l'instruction SELECT d'appel plus grande.

Voici l'exemple de pivot 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 

Lorsque j'exécute cette agains la base de données AdventureWorks, je reçois un seul jeu de résultats, comme prévu. Si vous obtenez plus d'un resultset alors 1) cette requête fait partie d'une procédure stoered plus grande qui exécute une autre requête et retourne cet autre ensemble de résultats aussi (donc change la procédure stockée), OU 2) vous êtes confondre quelque chose d'autre (comme les instructions PRINT) avec un ensemble de résultats, OU 3) il y a quelque chose qui ne va pas dans votre SQL Server ou dans les outils d'accès.

+0

Vous aviez raison ... le proc stocké retournait deux déclarations de sélection ... J'ai raté le premier. Seth –

Questions connexes