2014-04-11 4 views
0
아래

의 목록에서 마지막 값을 얻으려면 내가 한 달에 마지막 값을 얻으려면 내가 다음과 같은 예를 들어, 출력,T-SQL 쿼리 개월

date   value 
30/03/2014 625949 
23/03/2014 624549 
16/03/2014 623149 
09/03/2014 621549 
02/03/2014 619749 
23/02/2014 617749 
16/02/2014 616149 
09/02/2014 614549 
02/02/2014 612949 
19/01/2014 609749 
12/01/2014 608149 
06/01/2014 606749 

가 데이터입니다, 어떻게 나는 그것을 얻을 수 있습니까?

date   value 
30/03/2014 625949 
23/02/2014 617749 
19/01/2014 609749 

답변

1
SELECT date,value FROM table1 WHERE date in (
    SELECT MAX(date) FROM table1 GROUP BY MONTH(date) 
) 
5
;with Cte as(Select tDate,value, C=ROW_NUMBER() 
     over(PARTITION by convert(varchar(6), tdate, 112) order by tdate desc) 
     From #Temp) 

Select * 
from cte 
where C=1 

바이올린 Sample

+1

당신이'변환과'달 (있는데, TDate)'교체해야합니다 (VARCHAR (6) 있는데, TDate을, 112)' –

+0

이유하십시오? –

+0

@huMptyduMpty @snyder 주석이나'PARTITON BY YEAR (tdate), MONTH (tdate)'를 사용해야합니다. 그것은 다른 해에 1 개월의 경우입니다. – valex