比如表t1:
日期       金额      类型  
2011-8-1   20        销售
2011-8-1   5         退货
2011-8-2   30        销售
2011-8-2   10        销售
2011-8-2   10        退货我想得到这样的结果,按日期合计:
日期         销售金额        退货金额
2011-8-1      20              5
2011-8-2      40              10请问应该怎么写呢?

解决方案 »

  1.   

    仅仅用个Group By就把销售和退货的都合并了
      

  2.   

    SELECT SUM(CASE WHEN 类型='销售' THEN 金额 ELSE 0 END) AS 销售金额
    ,SUM(CASE WHEN 类型='退货' THEN 金额 ELSE 0 END) AS 退货金额
    FROM TB
    GROUP BY 日期
      

  3.   

    SELECT 日期
    ,SUM(CASE WHEN 类型='销售' THEN 金额 ELSE 0 END) AS 销售金额
    ,SUM(CASE WHEN 类型='退货' THEN 金额 ELSE 0 END) AS 退货金额
    FROM TB
    GROUP BY 日期
      

  4.   

    太牛了,竟然还能用case,我试试去
      

  5.   

    ;with cte as(
    select 日期,类型,sum(金额)je from t1 group by 日期,类型
    )select a.日期,a.je 销售金额,b.je 退货金额
    from cte a full join cte b on a.日期=b.日期 and a.类型='销售' and b.类型='退货'
      

  6.   

    select convert(varchar(10),日期,120) as 日期,
      sum(case 类型 when '销售' then 金额 else 0 end) 销售金额,
      sum(case 类型 when '退货' then 金额 else 0 end) 退货金额
    from t1
    group by 日期
      

  7.   

    select sum(金额),日期,类型 from t1 group by 日期,类型;