表内容如下
编号 数量 单价 日期
1 8 5 2012-01-21
2 5 5 2012-01-26
3 8 6 2012-02-23
4 6 10 2012-03-02
我想得到如下结果 查询条件:指定日期2012-03-31
本月数量 本年数量 本月金额 本年金额
6 27 60 173
谢谢
------解决方案--------------------
- SQL code
declare @d datetime;set @d='2012-03-31';SELECT SUM(CASE WHEN 日期 BETWEEN CONVERT(varchar(8),@d,120)+'01' AND DATEADD(day,-1,DATEADD(month,1,CONVERT(varchar(8),@d,120)+'01')) THEN 数量 ELSE 0 END) AS 本月数量, SUM(CASE WHEN 日期 BETWEEN CONVERT(varchar(5),@d,120)+'01-01' AND CONVERT(varchar(5),@d,120)+'12-31' THEN 数量 ELSE 0 END) AS 本年数量, SUM(CASE WHEN 日期 BETWEEN CONVERT(varchar(8),@d,120)+'01' AND DATEADD(day,-1,DATEADD(month,1,CONVERT(varchar(8),@d,120)+'01')) THEN 单价*数量 ELSE 0 END) AS 本月金额, SUM(CASE WHEN 日期 BETWEEN CONVERT(varchar(5),@d,120)+'01-01' AND CONVERT(varchar(5),@d,120)+'12-31' THEN 单价*数量 ELSE 0 END) AS 本年金额FROM tb