안녕하세요.
세로를 가로로 출력하는것은 몇번 해봤습니다만...
기본적으로 가로로 출력되는 결과를 세로로 출력하는것을 도무지 모르겠네요. ^^;;
비슷할것 같으면서도 것돌고 있네요.
CREATE TEBLE H01_AC
(
H01_EMO VARCHAR(4)
H01_YEAR VARCHAR(4)
H01_EMN VARCHAR(1)
H01_EMNS VARCHAR(8)
H01_EMNE VARCHAR(8)
H01_EMNO1 NUMERIC(10,0)
H01_EMNO2 NUMERIC(10,0)
H01_EMNO3 NUMERIC(10,0)
H01_EMNO4 NUMERIC(10,0)
H01_EMNO5 NUMERIC(10,0)
)
H01_EMO 사번
H01_YEAR 년도
H01_EMN 구분
H01_EMNS 시작일
H01_EMNE 종료일
H01_EMNO1 금액1
H01_EMNO2 금액2
H01_EMNO3 금액3
H01_EMNO4 금액4
H01_EMNO5 금액5
INSERT INTO H01_AC VALUES ( '0001' , '2013' , '1' , '20130101' , '20131231' , 50000000 , 1000 , 2000 , 3000 , 4000 )
INSERT INTO H01_AC VALUES ( '0002' , '2013' , '1' , '20130101' , '20131231' , 80000000 , 9000 , 8000 , 7000 , 4000 )
INSERT INTO H01_AC VALUES ( '0011' , '2013' , '1' , '20130101' , '20131231' , 90000000 , 6000 , 5000 , 4000 , 3000 )
INSERT INTO H01_AC VALUES ( '0019' , '2013' , '1' , '20130101' , '20131231' , 60000000 , 3000 , 2000 , 3000 , 4000 )
INSERT INTO H01_AC VALUES ( '0301' , '2013' , '1' , '20130501' , '20131231' , 40000000 , 2000 , 1000 , 3000 , 2000 )
INSERT INTO H01_AC VALUES ( '0303' , '2013' , '1' , '20130601' , '20131231' , 50000000 , 1000 , 2000 , 3000 , 4000 )
INSERT INTO H01_AC VALUES ( '0304' , '2013' , '1' , '20130731' , '20131231' , 50000000 , 1000 , 2000 , 2000 , 4000 )
원하는 결과는...
H01_EMO 0001 0002 0011 0019 0301 0303 0304
H01_YEAR 2013 2013 2013 2013 2013 2013 2013
H01_EMN 1 1 1 1 1 1 1
H01_EMNS 20130101 20130101 20130101 20130101 20130501 20130601 20130731
H01_EMNE 20131231 20131231 20131231 20131231 20131231 20131231 20131231
H01_EMNO1 50000000 80000000 90000000 60000000 40000000 50000000 50000000
H01_EMNO2 1000 9000 6000 3000 2000 1000 1000
H01_EMNO3 2000 8000 5000 2000 1000 2000 2000
H01_EMNO4 3000 7000 4000 3000 3000 3000 2000
H01_EMNO5 4000 4000 3000 4000 2000 4000 4000
Comment 4
-
진윤호
2014.02.11 14:34
-
아톰
2014.02.12 09:47
다른분께서 올려놓은신 것 참조하고 있는데요.
저는 SQL 2000 이라서요... pivot 는 2005부터 적용되었다고 되어있네요. ^^;;
-
열이
2014.02.11 19:11
-- 데이타 타입이 모두 같아야 가능합니다.
USE tempdb
GO
CREATE TABLE H01_AC
(
H01_EMO VARCHAR(10)
, H01_YEAR VARCHAR(10)
, H01_EMN VARCHAR(10)
, H01_EMNS VARCHAR(10)
, H01_EMNE VARCHAR(10)
, H01_EMNO1 VARCHAR(10)
, H01_EMNO2 VARCHAR(10)
, H01_EMNO3 VARCHAR(10)
, H01_EMNO4 VARCHAR(10)
, H01_EMNO5 VARCHAR(10)
)
INSERT INTO H01_AC VALUES
('0001','2013','1','20130101','20131231','50000000','1000','2000','3000','4000')
,('0002','2013','1','20130101','20131231','80000000','9000','8000','7000','4000')
,('0011','2013','1','20130101','20131231','90000000','6000','5000','4000','3000')
,('0019','2013','1','20130101','20131231','60000000','3000','2000','3000','4000')
,('0301','2013','1','20130501','20131231','40000000','2000','1000','3000','2000')
,('0303','2013','1','20130601','20131231','50000000','1000','2000','3000','4000')
,('0304','2013','1','20130731','20131231','50000000','1000','2000','2000','4000')
select
ColName
, MAX([1]) as ColValue1
, MAX([2]) as ColValue2
, MAX([3]) as ColValue3
, MAX([4]) as ColValue4
, MAX([5]) as ColValue5
, MAX([6]) as ColValue6
, MAX([7]) as ColValue7
from
(
select
row_number() over (partition by a.ColName order by Colvalue desc ) as mRank,
a.ColName,a.Colvalue
from
(
select ColName, Colvalue
from
(
select
H01_EMO
,H01_YEAR
,H01_EMN
,H01_EMNS
,H01_EMNE
,H01_EMNO1
,H01_EMNO2
,H01_EMNO3
,H01_EMNO4
,H01_EMNO5
from H01_AC
) p
UNPIVOT
(Colvalue FOR ColName in
(
H01_EMO
,H01_YEAR
,H01_EMN
,H01_EMNS
,H01_EMNE
,H01_EMNO1
,H01_EMNO2
,H01_EMNO3
,H01_EMNO4
,H01_EMNO5
)
) as unpvt
) a
) sourceType
PIVOT
(
MAX(Colvalue)
FOR mRank IN ([1],[2],[3],[4],[5],[6],[7] )
) AS PivotTable
GROUP BY ColName
-
아톰
2014.02.12 10:54
자세한 쿼리 감사합니다. ^^;;
다만 제가 SQL 2000 이라서 적용이 안되네요. 스크랩 했다가 차후 참고토록 할께요.
pivot 사용해 보세요
http://www.sqler.com/?document_srl=133535&mid=bSQLQA&rnd=488573#comment_488573
검색은 필수