अपने इच्छित परिणाम में डेटा स्थानांतरित करने के लिए, आपको UNPIVOT
दोनों का उपयोग करना होगा और PIVOT
कार्य।
UNPIVOT
फ़ंक्शन A
लेता है और B
कॉलम और परिणामों को पंक्तियों में परिवर्तित करता है। तब आप PIVOT
. का उपयोग करेंगे day
को बदलने का कार्य करता है कॉलम में मान:
select *
from
(
select day, col, value
from yourtable
unpivot
(
value
for col in (A, B)
) unpiv
) src
pivot
(
max(value)
for day in (Mon, Tue, Wed, Thu, Fri)
) piv
डेमो के साथ SQL Fiddle देखें।
यदि आप SQL Server 2008+ का उपयोग कर रहे हैं, तो आप CROSS APPLY
. का उपयोग कर सकते हैं VALUES
. के साथ डेटा को अनपिवट करने के लिए। आपका कोड निम्न में बदल जाएगा:
select *
from
(
select day, col, value
from yourtable
cross apply
(
values ('A', A),('B', B)
) c (col, value)
) src
pivot
(
max(value)
for day in (Mon, Tue, Wed, Thu, Fri)
) piv
डेमो के साथ SQL Fiddle देखें।
# 1 संपादित करें, अपनी वर्तमान क्वेरी को उपरोक्त समाधान में लागू करने से आप कुछ इसी तरह का उपयोग करेंगे:
select *
from
(
select LEFT(datename(dw,datetime),3) as DateWeek,
col,
value
from DataTable
cross apply
(
values ('A', ACalls), ('B', BCalls)
) c (col, value)
) src
pivot
(
sum(value)
for dateweek in (Mon, Tue, Wed, Thu, Fri)
) piv