我有下表,它基本上是每日交易的摘要,每晚都会加载。
+++++++++++++++++++++++
+ DateCreated + Sale +
+++++++++++++++++++++++
+ 20100101 + 1000 +
+ 20100131 + 2000 +
+ 20100210 + 2000 +
+ 20100331 + 4000 +
+++++++++++++++++++++++
我需要按月显示销售额,但仅限每个月的最后一天。
例如
JAN 2000
FEB 0
MAR 4000
我可以在我的选择中使用CASE完成此操作,但这是否有效?这是SQL Server 2000。
答案 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