带有日期过滤器的Sql Server查询

时间:2010-02-12 13:53:04

标签: sql tsql

我有一张这样的桌子;

ID int,
OrderedDate DateTime

我想只选择下个月的记录。

例如结果集:

ID    OrderedDate

110    January
110    February
200    January
200    February

如何撰写此查询?

2 个答案:

答案 0 :(得分:1)

这个问题似乎有点不清楚。但是该示例使您看起来想要按ID然后按月份名称进行排序。如果是这样,那么我认为这样做会。我没有SQL Server来测试它,所以我确定它有语法或其他错误。

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

答案 1 :(得分: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