परिवर्तन के इस प्रकार के एक धुरी के रूप में जाना जाता है। आप निर्दिष्ट नहीं किया क्या डेटाबेस का उपयोग कर रहे हैं लेकिन कोई भी प्रणाली में एक CASE
अभिव्यक्ति के साथ एक समग्र समारोह का उपयोग कर सकते हैं:
select employeeid,
max(case when IsActive = 'true' then IndividualPay end) IndPay_IsActive,
max(case when IsActive = 'false' then IndividualPay end) IndPay_IsNotActive,
max(case when IsActive = 'true' then FamilyPay end) FamilyPay_IsActive,
max(case when IsActive = 'false' then FamilyPay end) FamilyPay_IsNotActive
from yourtable
group by employeeid
देखें SQL Fiddle with Demo
अपने डेटाबेस के आधार पर आप दोनों PIVOT
के लिए उपयोग किया है, तो और UNPIVOT
काम करता है, तो वे परिणाम प्राप्त करने के लिए इस्तेमाल किया जा सकता है। UNPIVOT
समारोह पंक्तियों में IndividualPay
और FamilyPay
कॉलम बदल देता है। एक बार यह हो जाता है, तो आप PIVOT
समारोह के साथ चार नए स्तंभ बना सकते हैं:
select *
from
(
select employeeid,
case when isactive = 'true'
then col+'_IsActive'
else col+'_IsNotActive' end col,
value
from yourtable
unpivot
(
value
for col in (IndividualPay, FamilyPay)
) unpiv
) src
pivot
(
max(value)
for col in (IndividualPay_IsActive, IndividualPay_IsNotActive,
FamilyPay_IsActive, FamilyPay_IsNotActive)
) piv
SQL Fiddle with Demo देखें।
दोनों एक ही परिणाम दे:
| EMPLOYEEID | INDIVIDUALPAY_ISACTIVE | INDIVIDUALPAY_ISNOTACTIVE | FAMILYPAY_ISACTIVE | FAMILYPAY_ISNOTACTIVE |
----------------------------------------------------------------------------------------------------------------
| 1 | 200 | 100 | 300 | 150 |
हाँ, आप एक धुरी क्वेरी चाहते हैं, लेकिन वाक्य रचना डेटाबेस प्रणाली से भिन्न होता है। आप किसका उपयोग कर रहे हैं – Alkini