पिवोट टेबल क्यू - एसक्यूएल सर्वर 2008

मेरे पास निम्न तालिका है ...

GROUPING    Num DEF  TOTAL   SOURCE
a           1   a    -2503   WTH
a           2   b    -180    DET
a           2   c    -156    PLY
a           4   d    -99     DET
a           5   e    -252    DET

जो मैं निम्नानुसार प्रस्तुत करना चाहता हूं ...

GROUPING    Num    DET      PLY     WTH
a           1                       -2503
a           2      -180     -156
a           4      -99      
a           5      -252     

मेरा प्रयास यहाँ है ...

select 
    grouping
    ,num 
    ,det
    ,ply
    ,wth
from #temp
pivot (
    sum([TOTAL]) for [SOURCE] in (det,ply,wth)
) x

लेकिन मुझे num = 2 के साथ 2 पंक्तियां मिलती हैं जहां मुझे 1 पंक्ति चाहिए।

किसी भी मदद की सराहना की।

धन्यवाद, जेम्स

0

1 उत्तर

आपकी मौजूदा क्वेरी आपकी तालिका से चयन करने के लिए उपकुंजी का उपयोग नहीं कर रही है, नतीजतन PIVOT द्वारा उपयोग किए जाने वाले सभी कॉलम GROUP BY में उपयोग नहीं किए जाते हैं। चूंकि आपके पास DEF कॉलम के लिए कई अलग-अलग मान हैं, इसलिए आप num = 2 के लिए कई पंक्तियां लौट रहे हैं।

मैं PIVOT के लिए आवश्यक कॉलम और अंतिम चयन सूची का चयन करने के लिए एक सबक्वायरी का उपयोग करूंगा:

select 
    grouping
    ,num 
    ,det
    ,ply
    ,wth
from
(
  select grouping, num, total, source
  from #temp
) d
pivot 
(
  sum([TOTAL]) 
  for [SOURCE] in (det,ply,wth)
) x;

See SQL Fiddle with Demo

0
जोड़ा