日期:2014-05-18  浏览次数:20422 次

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