आपको एक PIVOT
. PIVOT के साथ ऐसा करने के दो तरीके हैं, या तो एक स्टेटिक पिवट जहां आप कॉलम को ट्रांसफॉर्म करने के लिए कोड करते हैं या एक डायनामिक पिवट जो निष्पादन पर कॉलम निर्धारित करता है।
स्थिर धुरी:
SELECT *
FROM
(
SELECT col1, col2
FROM yourTable
) x
PIVOT
(
min(col2)
for col1 in ([A], [B], [C])
)p
देखें SQL Fiddle with Demo
गतिशील धुरी:
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(col1)
from t1
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT ' + @cols + ' from
(
select col1, col2
from t1
) x
pivot
(
min(col2)
for col1 in (' + @cols + ')
) p '
execute(@query)
देखें SQL Fiddle with Demo
यदि आप PIVOT
. का उपयोग नहीं करना चाहते हैं फ़ंक्शन, तो आप CASE
. के साथ एक समान प्रकार की क्वेरी कर सकते हैं बयान:
select
SUM(CASE WHEN col1 = 'A' THEN col2 END) as A,
SUM(CASE WHEN col1 = 'B' THEN col2 END) as B,
SUM(CASE WHEN col1 = 'C' THEN col2 END) as C
FROM t1
देखें SQL Fiddle with Demo