有项目名称字段name,数据字段sj,标识bs:
name         sj   bs订单数量    11    0成品库存量  22    1每天的定单数量可以进行累加,但库存量是一个整体,每天的数据本身已经是累计好了的,
现在在按name进行分组查询的时候,想sum(sj),但bs为1的(比如成品库存量)就不进行累加,用本身sj可提示sj既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
group by中放进sj字段又起不到分组的效果不知道说清楚没有..

解决方案 »

  1.   

    SELECT [NAME],CASE WHEN BS=0 THEN SUM(SJ) WHEN BS=1 THEN MAX(SJ) END
    FROM TB
    GROUP BY [NAME] 
      

  2.   

    select name,sum(sj) sj from [Table] where bs=0 group by name
    union all
    select name,sj from [Table] where bs=1
      

  3.   

    select name,sj,累加数量=(select sum(case when bs=0 then 0 else sj end) from tb where 日期<=t.日期) from tb t感觉问题不够清晰,代码仅供参考.
      

  4.   

    用UNION ALL也可以
    SELECT [NAME],SUM(SJ) FROM TB WHERE BS=0 GROUP BY [NAME]
    UNION ALL
    SELECT [NAME],MAX(SJ) FROM TB WHERE BS=1 GROUP BY [NAME]
      

  5.   

    SELECT NAME,SUM(SJ) SJ FROM TB WHERE BS=0 GROUP BY NAME 
    UNOIN ALL
    SELECT NAME,SJ FROM TB WHERE BS=1 
      

  6.   

    select name,sum(sj)as  sj from [Table] where bs=0 group by name
    union all
    select name,sj from [Table] where bs=1