안녕하십니까, ACCESS를 데이터베이스로 하는 프로그램을 만들고 있습니다.
기능으로는 기간별(날짜) 환율 조회하고, 조회한 자료를 차트로 표시하는 프로그램을 만들려고 하는데요.
다름이 아니라 궁금한 점은 위에 있는 표를 아래와 같이 가로로 표시를 하려고 하는데, 어떻게 Query를 짜야 할지 몰라서요.
DATE | 2006-02-15 | 2006-02-14 | 2006-02-13
USD | 930 | 935 | 932
EUR | 1107 | 1112 | 1109
JPY | 792 | 793 | 792
CNY | 115 | 116 | 115
몇몇 Q&A글을 보니깐 MAX나 Case When을 이용하라고 나와있긴 한데,
프로그램에서 기간별(날짜)로 조회를 해서 불러오는거라.. 응용을 해야 할지 잘 몰라서요 ㅠ
한 이틀을 찾아보다가 도저히 감이 잡히지 않아.. 이렇게 글을 올립니다.
Comment 5
-
Hisory
2014.06.16 11:25
-
차차리아카
2014.06.16 13:24
Pivot을 사용하니
DATE
USD
EUR
JPY
CNY
이렇게 나오지 않구요.
DATE
USD, EUR, JPY, CNY 이렇게 표시되더라구요 ㅠ
-
Hisory
2014.06.16 14:33
mssql 기준으로 테스트 했습니다...
--1.임시테이블 데이터 입력
Declare @tb Table
(
ymd varchar(10),
usd decimal(10,2),
eur decimal(10,2),
jpy decimal(10,2)
)declare @i int
Set @i = 1
while(@i < 100) begin
insert @tb(ymd , usd , eur , jpy )
Values (Convert(Varchar(10), DateAdd(day,@i*-1,GetDate()),121) , 1000.12 + @i*1.15 , 3000.12 + @i*9.15 , 2000.12 + @i*5.95 )
Set @i = @i + 1
end--2.데이터 확인
Select * From @tb
--3.unpivot
Select ymd , pri , na from
(
select ymd , usd , eur , jpy
From @tb
) as p
unpivot
(
pri for na in (usd,eur,jpy)
) as dd
--4.pivot
select na , [2014-06-15],[2014-06-14] from
(
Select ymd , pri , na from
(
select ymd , usd , eur , jpy
From @tb
) as p
unpivot
(
pri for na in (usd,eur,jpy)
) as dd) as p11
pivot
(
sum(pri) for ymd in ([2014-06-15],[2014-06-14])
) as p12 -
차차리아카
2014.06.16 14:39
앗 감사합니다. ^^ 이걸 토대로 한번 다시 도전해보겠습니다.
감사합니다. ㅎ
-
차차리아카
2014.06.16 15:40
TRANSFORM max(val) as MaxValue
SELECT col
FROM
(
SELECT [ex_Date], '[USD/KRW]' as Col, [USD/KRW] as val
FROM Exchange
UNION ALL
SELECT [ex_Date], '[EUR/KRW]' as Col, [EUR/KRW] as val
FROM Exchange
UNION ALL
SELECT [ex_Date], '[JPY/KRW]' as Col, [JPY/KRW] as val
FROM Exchange
UNION ALL
SELECT [ex_Date], '[CNY/KRW]' as Col, [CNY/KRW] as val
FROM Exchange
)
Where Ex_DATE >='2014-06-01'
GROUP BY col
PIVOT [EX_Date]이렇게 하니 됐습니다 ^^ 참고하세요 ㅎㅎ
Access 2003 이용
ACCESS 에서도 pviot 을 지원하는지 모르겠네여.
mssql 2005 의 경우 pivot 을 사용하실수 있습니다.