निम्नलिखित प्रश्न आपको वह देना चाहिए जो आप चाहते हैं:
SELECT Store,
TotalSold,
[John] AS WastedByJohn,
[Jim] AS WastedByJim,
[Alex] AS WastedByAlex
FROM (SELECT Store, Employee, Waste,
SUM(Sold) OVER (PARTITION BY Store) AS TotalSold
FROM #Foo) src
PIVOT
(SUM(Waste)
FOR Employee IN ([John], [Jim], [Alex])
) PVT
यह समझने के लिए कि आपको अनपेक्षित परिणाम क्यों मिलते हैं, GROUP BY
. के बिना अपनी क्वेरी आज़माएं खंड:
SELECT Store, Sold, [John], [Jim], [Alex]
FROM
#Foo
PIVOT
(SUM(Waste)
FOR Employee IN ([John], [Jim], [Alex])
) PVT
आउटपुट:
Store Sold John Jim Alex
Harrisburg 20,00 20,00 10,00 NULL
Seattle 20,00 NULL 10,00 10,00
अब, नमूना डेटा के दूसरे संस्करण के साथ फिर से यही प्रयास करें:
आउटपुट:
Store Sold John Jim Alex
Harrisburg 25,00 10,00 NULL NULL
Harrisburg 30,00 10,00 NULL NULL
Harrisburg 40,00 NULL 10,00 NULL
Seattle 50,00 NULL 10,00 NULL
Seattle 60,00 NULL NULL 10,00
2 अलग-अलग परिणाम सेट की तुलना करके आप स्पष्ट रूप से देख सकते हैं कि PIVOT
इसमें भाग नहीं लेने वाले स्तंभों के प्रत्येक संयोजन के लिए होता है, अर्थात Store
के प्रत्येक संयोजन के लिए , Sold
।
पहले मामले में केवल Harrisburg,20,00
है और Seattle,20,00
. इसलिए आपको इस मामले में केवल दो पंक्तियाँ मिलती हैं। दूसरे मामले में आपके पास कुल 3 + 2 =5 संयोजन हैं।
अब आप देख सकते हैं कि क्यों GROUP BY
केवल दूसरे मामले में काम करता है।