SQL中的最后一天选择

时间:2010-03-15 16:35:23

标签: sql sql-server-2000

我有下表,它基本上是每日交易的摘要,每晚都会加载。

+++++++++++++++++++++++
+ DateCreated + Sale  +
+++++++++++++++++++++++
+ 20100101    + 1000  +
+ 20100131    + 2000  +
+ 20100210    + 2000  +
+ 20100331    + 4000  +
+++++++++++++++++++++++

我需要按月显示销售额,但仅限每个月的最后一天。

例如

JAN    2000
FEB       0
MAR    4000

我可以在我的选择中使用CASE完成此操作,但这是否有效?这是SQL Server 2000。

3 个答案:

答案 0 :(得分:7)

我的Q& D解决方案是构建一个日期,即下个月的第一天,然后减去一天。

答案 1 :(得分:1)

你可以这样做,但是对于缺失的数据它不会显示0:

select YEAR(DateCreated) as Year, MONTH(DateCreated) as Month, Sale
from MyTable
where DAY(DateCreated + 1) = 1

答案 2 :(得分:0)

我有一个日历表,只添加了一个“IsLastDayOfMonth”列,设置了每个月的最后一天。然后将其加入到我的查询中,仅通过“IsLastDayOfMonth”进行过滤,这样就可以了。

select a.datecreated,a.sale
         from salesummary a
 inner join calendar c
on a.datecreated = c.fulldatekey
 and c.IsLastDayOfMonth = 1
group by a.datecreated,a.sale