select 货号 ,max(case when 事务类型=零售出库 then 数量 else 0 end) as col1
 ,max(case when 事务类型=零售出库 then 金额 else 0 end) as col1
......
from yourtable group by 货号

解决方案 »

  1.   

    SELECT 
    货号,
    数量1 = MIN(CASE WHEN 事务类型 = '零售出库' THEN 数量 ELSE 0 END),
    金额1 = MIN(CASE WHEN 事务类型 = '零售出库' THEN 金额 ELSE 0 END),
    数量2 = MIN(CASE WHEN 事务类型 = '调拨出库' THEN 数量 ELSE 0 END),
    金额2 = MIN(CASE WHEN 事务类型 = '调拨出库' THEN 金额 ELSE 0 END),
    数量3 = MIN(CASE WHEN 事务类型 = '赊销出库' THEN 数量 ELSE 0 END),
    金额3 = MIN(CASE WHEN 事务类型 = '赊销出库' THEN 金额 ELSE 0 END),
    数量4 = MIN(CASE WHEN 事务类型 = '盘亏出库' THEN 数量 ELSE 0 END),
    金额4 = MIN(CASE WHEN 事务类型 = '盘亏出库' THEN 金额 ELSE 0 END)
    FROM T 
    GROUP BY 货号
      

  2.   

    我想问一下Min和Max在这里是什么意思,如果我有几条同一个“货号”同一种“事务类型”的记录,我要合计,是不是用Sum就可以了?
      

  3.   

    是的,如果有几条同一个“货号”同一种“事务类型”的记录,那么就用SUM就可以了。
      

  4.   

    如果有几条同一个“货号”同一种“事务类型”的记录,要合计用Sum就可以了
    SELECT 
    货号,
    SUM(CASE WHEN 事务类型 = '零售出库' THEN 数量 ELSE 0 END)AS 零售出库数量,
    SUM(CASE WHEN 事务类型 = '零售出库' THEN 金额 ELSE 0 END)AS 零售出库金额,
    SUM(CASE WHEN 事务类型 = '调拨出库' THEN 数量 ELSE 0 END)AS 调拨出库数量,
    SUM(CASE WHEN 事务类型 = '调拨出库' THEN 金额 ELSE 0 END)AS 调拨出库金额,
    SUM(CASE WHEN 事务类型 = '赊销出库' THEN 数量 ELSE 0 END)AS 赊销出库数量,
    SUM(CASE WHEN 事务类型 = '赊销出库' THEN 金额 ELSE 0 END)AS 赊销出库金额,
    SUM(CASE WHEN 事务类型 = '盘亏出库' THEN 数量 ELSE 0 END)AS 盘亏出库数量,
    SUM(CASE WHEN 事务类型 = '盘亏出库' THEN 金额 ELSE 0 END)AS 盘亏出库金额
    FROM T 
    GROUP BY 货号
      

  5.   

    SELECT 
    货号,
    SUM(CASE WHEN 事务类型 = '零售出库' THEN 数量 ELSE 0 END)AS 零售出库数量,
    SUM(CASE WHEN 事务类型 = '零售出库' THEN 金额 ELSE 0 END)AS 零售出库金额,
    SUM(CASE WHEN 事务类型 = '调拨出库' THEN 数量 ELSE 0 END)AS 调拨出库数量,
    SUM(CASE WHEN 事务类型 = '调拨出库' THEN 金额 ELSE 0 END)AS 调拨出库金额,
    SUM(CASE WHEN 事务类型 = '赊销出库' THEN 数量 ELSE 0 END)AS 赊销出库数量,
    SUM(CASE WHEN 事务类型 = '赊销出库' THEN 金额 ELSE 0 END)AS 赊销出库金额,
    SUM(CASE WHEN 事务类型 = '盘亏出库' THEN 数量 ELSE 0 END)AS 盘亏出库数量,
    SUM(CASE WHEN 事务类型 = '盘亏出库' THEN 金额 ELSE 0 END)AS 盘亏出库金额
    FROM 
    (select                    
    'A137-2' as 货号  , '零售出库' as  事务类型 ,    1 as 数量  ,    10 as  单价  ,   10 as 金额 union all
    select 'A137-2'   ,'调拨出库'   ,   3      , 15 ,      45
    union all select 'A137-2'   ,'赊销出库'   ,   5     ,  18  ,     90
    union all select 'A137-2'   ,'盘亏出库'  ,    1   ,    18  ,     18
    union all select 'A137-3'   ,'零售出库'   ,   3   ,    10    ,   30
    union all select 'A137-3'  , '调拨出库'   ,   3  ,     10     ,  30
    union all select 'A137-3' ,  '赊销出库'    ,  5 ,      18      , 90
    union all select 'A137-3',   '盘亏出库'     , 1,       18       ,18)T 
    GROUP BY 货号结果
    货号     零售出库数量      零售出库金额      调拨出库数量      调拨出库金额      赊销出库数量      赊销出库金额      盘亏出库数量      盘亏出库金额      
    ------ ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- 
    A137-2 1           10          3           45          5           90          1           18
    A137-3 3           30          3           30          5           90          1           18(2 row(s) affected)