테이블에 아래와 같이 데이터가 들어 있습니다.
UtilNum |
User_NUM |
Confirm_Date |
Part |
1 |
1 |
2013-03-04 12:00 |
Service |
2 |
1 |
2013-03-02 12:00 |
Service |
1 |
3 |
2013-03-02 12:00 |
Service |
1 |
4 |
2013-03-05 12:00 |
Sales |
2 |
6 |
2013-03-03 12:00 |
Sales |
3 |
1 |
2013-03-03 12:00 |
Service |
Util_Summary 테이블과 합치기 위해서 UtilNum을 기준으로 Part별로 최신 입력 데이터를 피벗테이블(?) 을 이용해서 뿌려주려고 합니다.
UtilNum Service_User Service_Confirm_Date Sales_User Sales_Confirm_Date
1 1 2013-03-04 12:00 4 2013-03-05 12:00
2 1 2013-03-02 12:00 6 2013-03-03 12:00
3 1 2013-03-03 12:00 NULL NULL
이렇게 뽑고 싶은데요.
select Utilnum
, max(case when part = 'Service' then user_num end ) [Service_Conf_User]
, max(case when part = 'Sales' then user_num end ) [Sales_Conf_User]
, max(case when part = 'Service' then confirm_date end ) [Service_Conf_Date]
, max(case when part = 'Sales' then confirm_date end ) [Sales_Conf_Date]
from UtilizationConfigure
group by Utilnum, part
이렇게 하니 각 필드별로 Max값들을 받아와서.... 원하는 값이 안나오네요.
ConfirmDate가 max인 User_num 을 받아오려면 어떻게 해야 할까요?
Comment 2
-
이리
2013.09.04 11:14
-
건우아빠
2013.09.04 14:14
UtilNum 별 max(Confirm_Date) 를 구하신 다음
원 테이블과 조인을 하시면 UtilNum 별 마지막 User_NUM을 가지고 올수 있습니다...
이 걸 기준으로 서브쿼리를 이용하셔도 되고. cross apply(outer apply)를 이용해서
UtilNum, max(Confirm_Date) 를 cross apply(outer apply) 넘기고 max(Confirm_Date) 보다 작은 Confirm_Date을 top 1 (onfirm_Date desc)하나의 값을 받아서 전 값을 보여 주시면 됩니다.
2005시면 ROW_NUMBER() 함수를 이용해 보시길 권해드립니다.