当前位置: 代码迷 >> Sql Server >> sql 查询话语
  详细解决方案

sql 查询话语

热度:110   发布时间:2016-04-27 12:12:17.0
sql 查询语句
表内容如下

编号 数量 单价 日期  
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
  相关解决方案