一个表包含物料编号,数量,库存,
如 物料编号 数量 库存
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语句怎么写,谢谢!
如 物料编号 数量 库存
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语句怎么写,谢谢!
解决方案 »
- 求助,一个触发器的问题
- 因为in不可以用外连接,求一SQL
- 我的 Oracle登录不了 帮忙解决下
- 求教 oracle rac windows 2003 用户"administrator"等同用户检查失败 的错误
- ===高分求解!!超困难的外连接查询问题!!===
- 关于数据类型的转换问题~~! 在线等待
- 还是sql的问题
- 如何用sql语句实现一下功能啊:删除表中的一些纪录并将相关纪录转移到一个表中啊?
- 在SQL语句中获得本日所在的当月和当年的日期?
- 能否象sql server2000企业管理器那样在画面中加上对所建表字段的注释?
- 在oracle中如何查询一个表中有多少个字段
- 冷备份为何必须关闭数据库?
物料编号,
SUM(DECODE(库存,'BJ',数量,0)) BJ,
SUM(DECODE(库存,'SH',数量,0)) SH,
SUM(DECODE(库存,'GZ',数量,0)) GZ,
SUM(DECODE(库存,'SZ',数量,0)) SZ
from
表名
group by
物料编号
物料编号,
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
物料编号
物料编号,
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
物料编号
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: 缺少右括号
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