이 변환 유형은 피벗으로 알려져 있습니다. 당신은 당신이 사용하고있는 데이터베이스를 지정하지 않은하지만 당신은 어떤 시스템에서 CASE
표현으로 집계 함수를 사용할 수 있습니다 : 당신이 모두 PIVOT
에 액세스 할 수있는 경우
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
를 참조하십시오 그리고 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