2010-02-12 19 views
0

나는 이와 같은 테이블을 가지고 있습니다.날짜 필터가있는 SQL Server 쿼리

ID int, 
OrderedDate DateTime 

다음 달의 기록 만 선택하고 싶습니다. 예를 들어, 결과 세트의

:

ID OrderedDate 

110 January 
110 February 
200 January 
200 February 

가 어떻게이 쿼리를 작성할 수 있습니다

?

+0

귀하의 질문에 약간의 불확실성이 있습니다. 자세히 말씀해주십시오. – CJM

답변

1

ID 대신 주문 번호가 있지만 월 대신에 이름으로 정렬 된 개월 목록을 원하십니까?

create table test21210 
(
    id int, 
    OrderedDate datetime 
) 
go 

insert test21210 (id, OrderedDate) values (110, '1/1/2010') 
insert test21210 (id, OrderedDate) values (110, '1/5/2010') 
insert test21210 (id, OrderedDate) values (110, '1/10/2010') 
insert test21210 (id, OrderedDate) values (110, '2/2/2010') 
insert test21210 (id, OrderedDate) values (110, '2/4/2010') 
insert test21210 (id, OrderedDate) values (110, '2/6/2010') 

insert test21210 (id, OrderedDate) values (200, '1/3/2010') 
insert test21210 (id, OrderedDate) values (200, '1/5/2010') 
insert test21210 (id, OrderedDate) values (200, '1/7/2010') 
insert test21210 (id, OrderedDate) values (200, '1/9/2010') 
insert test21210 (id, OrderedDate) values (200, '2/3/2010') 
insert test21210 (id, OrderedDate) values (200, '2/5/2010') 
insert test21210 (id, OrderedDate) values (200, '2/7/2010') 
insert test21210 (id, OrderedDate) values (200, '2/9/2010') 
go 

with idmonth (id, MonthNumber) as 
(
    select id, MONTH(ordereddate) as 'MonthNumber' 
    from test21210 
    group by id, MONTH(ordereddate) 
) 
select id, DATENAME(MONTH, STR(MonthNumber)+'/1/2000') 
from idmonth 
order by id, MonthNumber 
1

질문이 약간 불분명 해 보입니다. 그러나이 예에서는 ID별로 정렬 한 다음 월 이름으로 정렬하려는 것처럼 보입니다. 그렇다면, 나는 이것이 그것을 할 것이라고 생각한다. 테스트 할 SQL Server가 없으므로 구문이나 다른 오류가있는 것으로 확신합니다.

SELECT ID, DATENAME(month, OrderedDate) AS OrderedDate from table 
     ORDER BY 1, MONTH(OrderedDate)