इसके लिए विभिन्न दृष्टिकोण हो सकते हैं। आप पिवट के बाद सभी योगों की गणना कर सकते हैं, या आप पहले योग प्राप्त कर सकते हैं, फिर सभी परिणामों को पिवट कर सकते हैं। एक प्रकार का मध्य मैदान होना भी संभव है:एक प्रकार का योग प्राप्त करें (उदाहरण के लिए पंक्ति-वार वाले), धुरी, फिर दूसरे प्रकार का प्राप्त करें, हालांकि यह अतिदेय हो सकता है।
उल्लिखित दृष्टिकोणों में से पहला, पिवट के बाद सभी योग प्राप्त करना, बहुत ही सरल तरीके से किया जा सकता है, और नीचे दिए गए कार्यान्वयन में आपके लिए संभावित रूप से केवल एक ही चीज हो सकती है GROUP BY ROLLUP()
:
SELECT
[ ] = ISNULL(environment_name, 'Total'),
[Enviro] = SUM([Enviro]),
[Requi] = SUM([Requi]),
[Dev] = SUM([Dev]),
[Tsc] = SUM([Tsc]),
[TD] = SUM([TD]),
[Unkn] = SUM([Unkn]),
Total = SUM([Enviro] + [Requi] + [Dev] + [Tsc] + [TD] + [Unkn])
FROM (
SELECT environment_name, root_cause
FROM test1
) s
PIVOT (
COUNT(root_cause)
FOR root_cause IN ([Enviro], [Requi], [Dev], [Tsc], [TD], [Unkn])
) p
GROUP BY
ROLLUP(environment_name)
;
मूल रूप से, GROUP BY ROLLUP()
भाग कुल पंक्ति . उत्पन्न करता है तेरे लिए। समूहीकरण सबसे पहले environment_name
. द्वारा किया जाता है , फिर ग्रैंड टोटल रो जोड़ दी जाती है।
ठीक इसके विपरीत करने के लिए, यानी पिवोटिंग से पहले योग प्राप्त करें, आप GROUP BY CUBE()
को नियोजित कर सकते हैं इस तरह:
SELECT
[ ] = environment_name,
[Enviro] = ISNULL([Enviro], 0),
[Requi] = ISNULL([Requi] , 0),
[Dev] = ISNULL([Dev] , 0),
[Tsc] = ISNULL([Tsc] , 0),
[TD] = ISNULL([TD] , 0),
[Unkn] = ISNULL([Unkn] , 0),
Total = ISNULL(Total , 0)
FROM (
SELECT
environment_name = ISNULL(environment_name, 'Total'),
root_cause = ISNULL(root_cause, 'Total'),
cnt = COUNT(*)
FROM test1
WHERE root_cause IS NOT NULL
GROUP BY
CUBE(environment_name, root_cause)
) s
PIVOT (
SUM(cnt)
FOR root_cause IN ([Enviro], [Requi], [Dev], [Tsc], [TD], [Unkn], Total)
) p
;
SQL Fiddle पर दोनों विधियों का परीक्षण और उनके साथ खेला जा सकता है:
नोट। मैंने दोनों सुझावों में अविभाजित चरण को छोड़ दिया है क्योंकि एक स्तंभ को खोलना स्पष्ट रूप से बेमानी लग रहा था। यदि इसमें और भी कुछ है, तो किसी भी प्रश्न को समायोजित करना आसान होना चाहिए।