感觉WHERE子句里的条件对SELECT子句中的汇总函数都一样的,但我想对一个字段对几次条件不同的汇总,能用一条语句完成吗?比如查出一年中每个月销售总额

解决方案 »

  1.   

    假设你的表结构如下:销售数量,月份,年份
    每次销售都有一条纪录。select sum(销售数量) where 年份=2003 group by 月份没测试,应该是这样的
      

  2.   

    CREATE TABLE #aa (COL1 DATETIME,SALES INT)INSERT INTO #aa VALUES('2003-1-1',600)
    INSERT INTO #aa VALUES('2003-1-3',600)
    INSERT INTO #aa VALUES('2003-2-1',200)
    INSERT INTO #aa VALUES('2003-3-1',100)
    INSERT INTO #aa VALUES('2003-3-10',200)
    INSERT INTO #aa VALUES('2003-4-1',600)
    INSERT INTO #aa VALUES('2003-4-5',500)
    INSERT INTO #aa VALUES('2003-4-9',300)SELECT DATEPART(MM,COL1) AS 月份,SUM(SALES) AS 销量
    FROM #aa WHERE DATEPART(YY,COL1) ='2003' GROUP BY DATEPART(MM,COL1)DROP TABLE #aa
      

  3.   

    假设表结构是:销售数量,销售单价,日期select sum(销售数量*销售单价) as 销售总额,month(日期) as 月份 where year(日期)='2003' order by 月份
      

  4.   

    SELECT SUM(A.*),SUM(B.*).........,SUM(L.*)
    FROM 
    (SELECT * FROM TABLE 
    WHERE MONTH=1) A,
    (SELECT * FROM TABLE 
    WHERE MONTH=2) B,
    (SELECT * FROM TABLE 
    WHERE MONTH=3) C,
    .
    .
    .
    (SELECT * FROM TABLE 
    WHERE MONTH=12) L
      

  5.   

    首先楼上的是可以实现的,假设日期 RQ(20030101),销售额amount
    可以用sum(case  when substring(rq,3,2)='01' then amount else 0 end) as 一月,
    case  when substring(rq,3,2)='02' then amount else 0 end) as 二月
    ..........................................