一个表包含物料编号,数量,库存,
如     物料编号   数量   库存
        8B00X1    30      BJ
        8B00X1    5       SH
        8B00X1    7       GZ
        8B00X1    9       SZ
        8B0004    30      SH
..........
现在要统计每个子库存的物料编号的数量
表现形式为:    物料编号    BJ  SH   GZ    SZ 
    8B00X1      30   5    7    9
    8B0004           30      
这个sql语句怎么写,谢谢!

解决方案 »

  1.   

    select 
        物料编号,
        SUM(DECODE(库存,'BJ',数量,0)) BJ,
        SUM(DECODE(库存,'SH',数量,0)) SH,
        SUM(DECODE(库存,'GZ',数量,0)) GZ,
        SUM(DECODE(库存,'SZ',数量,0)) SZ
    from
        表名
    group by
        物料编号
      

  2.   

    select 
        物料编号,
        SUM(CASE 库存 WHEN 'BJ' THEN 数量 ELSE 0 END)) BJ,
        SUM(CASE 库存 WHEN 'SH' THEN 数量 ELSE 0 END)) SH,
        SUM(CASE 库存 WHEN 'GZ' THEN 数量 ELSE 0 END)) GZ,
        SUM(CASE 库存 WHEN 'SZ' THEN 数量 ELSE 0 END)) SZ
    from
        表名
    group by
        物料编号
      

  3.   

    select 
        物料编号,
        SUM(CASE 库存 WHEN 'BJ' THEN 数量 ELSE 0 END) BJ,
        SUM(CASE 库存 WHEN 'SH' THEN 数量 ELSE 0 END) SH,
        SUM(CASE 库存 WHEN 'GZ' THEN 数量 ELSE 0 END) GZ,
        SUM(CASE 库存 WHEN 'SZ' THEN 数量 ELSE 0 END) SZ
    from
        表名
    group by
        物料编号
      

  4.   

    SELECT SUM(CASE B.SUBINVENTORY_CODE when 'SZ01' THEN B.TOTAL_QOH 0  END )AS SZ01,
    SUM(CASE B.SUBINVENTORY_CODE  when 'SZ02' THEN B.TOTAL_QOH 0  END )AS SZ02,
    NVL(A.CROSS_REFERENCE,C.SEGMENT1) AS OLD_NUM,C.SEGMENT1 AS NEW_NUM,C.DESCRIPTION,B.TOTAL_QOH,B.SUBINVENTORY_CODE 
    FROM INV.MTL_CROSS_REFERENCES A,APPS.MTL_ONHAND_SUB_V B,INV.MTL_SYSTEM_ITEMS_B C 
    WHERE B.INVENTORY_ITEM_ID = A.INVENTORY_ITEM_ID(+) 
    AND B.INVENTORY_ITEM_ID = C.INVENTORY_ITEM_ID 
    AND C.ORGANIZATION_ID =45 
    GROUP BY B.TOTAL_QOH
    SZ01,SZ02 是库存 ,B.TOTAL_QOH是数量 ,执行这个sql语句,系统报错为ORA-00907: 缺少右括号
      

  5.   

    SELECT 
        SUM(CASE B.SUBINVENTORY_CODE when 'SZ01' THEN B.TOTAL_QOH ELSE 0 END )AS SZ01,
        SUM(CASE B.SUBINVENTORY_CODE when 'SZ02' THEN B.TOTAL_QOH ELSE 0 END )AS SZ02,
        NVL(A.CROSS_REFERENCE,C.SEGMENT1) AS OLD_NUM,
        C.SEGMENT1 AS NEW_NUM,
        C.DESCRIPTION,
        B.TOTAL_QOH,
        B.SUBINVENTORY_CODE 
    FROM 
        INV.MTL_CROSS_REFERENCES A,APPS.MTL_ONHAND_SUB_V B,INV.MTL_SYSTEM_ITEMS_B C 
    WHERE 
        B.INVENTORY_ITEM_ID = A.INVENTORY_ITEM_ID(+) 
        AND 
        B.INVENTORY_ITEM_ID = C.INVENTORY_ITEM_ID 
        AND 
        C.ORGANIZATION_ID =45 
    GROUP BY 
        NVL(A.CROSS_REFERENCE,C.SEGMENT1),
        C.SEGMENT1,
        C.DESCRIPTION,
        B.TOTAL_QOH,
        B.SUBINVENTORY_CODE