안녕하세요 도움이 필요 합니다.
우선은 이렇게 된 테이블이 있습니다.
이것을 이렇게 바꾸고 싶습니다.
EQUIP_LINE EQUIPMENT POINT YEAR MONTH [21] [22] [23]
SMT-E INLOADER 0 2013 05 OK
SMT-E INLOADER 1 2013 05 OK
SMT-E INLOADER 2 2013 05 OK
SMT-E PRINTER 0 2013 05 OK OK OK
SMT-E PRINTER 1 2013 05 OK OK OK
SMT-E PRINTER 2 2013 05 OK OK OK
이런식으로 바꾸고 싶습니다.
[21],[22],[23],,,,,, 이 숫자는 더 늘어 납니다.
EQIP_LINE, EQIPMENT POINT도 더 증가 합니다.
어떻게 바꾸면 될까요???
Comment 1
-
건우아빠
2013.05.22 17:32
피벗을 쓰시면 되구요..
일자부분이라 굳이 동적쿼리를 이용하실 필요 까지는 없을듯 합니다. .
동적 피벗이나 중첩 피벗을 공부 하고 싶으시면 PIVOT으로 댓글을 검색하시면 많이 있습니다...
중첩피벗 : http://www.sqler.com/550102
WITH RES
AS (
SELECT 'SMT-E' EQUIP_LINE,'INLOADER' EQUIPMENT,0 POINT ,'2013' YEAR ,'05' MONTH, '21' DAY ,'OK' DATA UNION ALL
SELECT 'SMT-E','INLOADER',1 ,'2013' ,'05' ,'22' ,'OK' UNION ALL
SELECT 'SMT-E','INLOADER',1 ,'2013' ,'05' ,'24' ,'OK' UNION ALL
SELECT 'SMT-E','INLOADER',2 ,'2013' ,'05' ,'23' ,'OK' UNION ALL
SELECT 'SMT-E','PRINTER' ,0 ,'2013' ,'05' ,'24' ,'OK' UNION ALL
SELECT 'SMT-E','PRINTER' ,1 ,'2013' ,'05' ,'25' ,'OK' UNION ALL
SELECT 'SMT-E','PRINTER' ,2 ,'2013' ,'05' ,'26' ,'OK' )
SELECT EQUIP_LINE, EQUIPMENT ,POINT ,YEAR, MONTH
, ISNULL([01],'') [01]
, ISNULL([02],'') [02]
, ISNULL([03],'') [03]
, ISNULL([21],'') [21]
, ISNULL([22],'') [22]
, ISNULL([23],'') [23]
, ISNULL([24],'') [24]
, ISNULL([25],'') [25]
, ISNULL([26],'') [26]
, ISNULL([27],'') [27]
, ISNULL([28],'') [28]
, ISNULL([29],'') [29]
, ISNULL([30],'') [30]
, ISNULL([31],'') [31]
FROM RES
PIVOT
(
MAX(DATA)
FOR DAY IN ( [01],[02],[03],[04],[05],[06],[07],[08],[09],[10]
,[11],[12],[13],[14],[15],[16],[17],[18],[19],[20]
,[21],[22],[23],[24],[25],[26],[27],[28],[29],[30]
,[31])
) AS PVT
ORDER BY EQUIP_LINE, EQUIPMENT ,POINT ,YEAR, MONTH