【发布时间】:2019-12-11 22:03:24
【问题描述】:
这是我目前的查询。
SELECT DISTINCT(ITEM_NAME),
DESCRIPTION,
SUM(wm_inventory.ON_HAND_QTY) "INV",
(SELECT DISTINCT(ITEM_NAME),
SUM(wm_inventory.ON_HAND_QTY)
FROM LOCN_HDR lh
INNER JOIN wm_inventory
ON lh.LOCN_ID = wm_inventory.LOCATION_ID
INNER JOIN item_cbo
ON wm_inventory.ITEM_ID = item_cbo.ITEM_ID
where zone = 'BK5') as "QTY"
FROM LOCN_HDR lh
INNER JOIN wm_inventory
ON lh.LOCN_ID = wm_inventory.LOCATION_ID
INNER JOIN item_cbo
ON wm_inventory.ITEM_ID = item_cbo.ITEM_ID
WHERE ZONE IN ('BK1','BK2','BK3','BK4')
and ITEM_NAME in (SELECT DISTINCT(item_cbo.ITEM_NAME)
FROM LOCN_HDR lh
INNER JOIN wm_inventory
ON lh.LOCN_ID = wm_inventory.LOCATION_ID
INNER JOIN item_cbo
ON wm_inventory.ITEM_ID = item_cbo.ITEM_ID
where zone = 'BK5')
GROUP BY ITEM_NAME,
DESCRIPTION
ORDER BY ITEM_NAME
在此之后,我收到错误“ORA-00913:值太多”,因为 select 语句中的子查询正在拉两列。有解决办法吗?
基本上我需要提取两组不同位置的库存并并排比较。
我需要另一列包含“BK5”位置的库存。 “数量”列当前包含 BK1-4 位置的总和。
【问题讨论】:
-
提供一些样本数据集和预期输出。
-
添加的图片是查询成功的图片,子查询中没有(SELECT DISTINCT(ITEM_NAME))
-
你知道
DISTINCT适用于一行,而不是一列?您对DISTINCT(x)的使用可能没有达到您的预期。 -
它正在做我在这种情况下需要它做的事情。它正确评估库存
-
如果您这么说,但您不需要在选择中使用
DISTINCT-GROUP BY会为您处理。无论如何,我认为您的要求只是进行相关的子查询。所以你需要一个别名。我会写一个答案!