我在英国的分销中心工作,我最近开始使用SQL查询直接从数据库访问数据。SQL查询 - 努力写/结构
我的任务是编写一个查询,给出每个通道中的位置总数(来自表locn_hdr)以及每个通道中总的位置数量。我'设法得到我需要的所有信息,但通过使用twp单独查询。我挣扎,它们组合成以下标题
过道 - 位置数 - 数的空位置
这两个查询我已经低于位置
计数的
select AISLE, COUNT(AISLE)
from LOCN_HDR LH
where LH.LOCN_CLASS = 'A'
and BAY >= '0030'
AND BAY <= '0230'
AND PICK_DETRM_ZONE LIKE 'HG%'
AND LH.AISLE <= 'QA'
group by aisle
Order by aisle;
计数的容器
SELECT aisle, COUNT(dsp_locn)
FROM locn_hdr lh
WHERE lh.locn_class = 'A'
AND bay >= '0030'
AND bay <= '0230'
AND pick_detrm_zone LIKE 'HG%'
AND lh.aisle <= 'QA'
AND NOT EXISTS
(SELECT 1
FROM wm_inventory wi
WHERE wi.location_id = lh.locn_id
AND wi.on_hand_qty > '0')
GROUP BY aisle
ORDER BY aisle;
理想情况下,印度只是想要重新编写的sql的答案。我想了解我将来可以如何做类似的事情。
在此先感谢你们!对不起,如果我没有提供足够的信息,轻松对我我是新的!
编辑
嗨,首先感谢您的帮助!非常感谢。但是,它不能正常工作,因为我需要它。列数(lh.aisle)计算空位数量,而不是通道中位置的总数。我不得不稍微改变SQL,因为我收到错误消息,所以我暂时使用
SELECT lh.AISLE, COUNT(lh.AISLE), COUNT(wi.location_id) -- count(lh.aisle) gives me the total empty locatins. Count(wi.location_id) gives me nothing...
FROM LOCN_HDR lh
LEFT OUTER JOIN wm_inventory wi ON wi.location_id = lh.locn_id AND wi.on_hand_qty > '0'
WHERE lh.LOCN_CLASS = 'A'
AND lh.BAY BETWEEN '0030' AND '0230'
AND lh.PICK_DETRM_ZONE LIKE 'HG%'
AND lh.AISLE <= 'QA'
AND wi.location_id IS NULL -- where there is no matching record for lh.locn_id with a quantity > 0
GROUP BY lh.AISLE
ORDER BY lh.AISLE;
这给了我这太棒了空位置的计数。但是我没有计算地点总数(空或不)。
任何更多的想法,将不胜感激!
这看起来像'SQL Server',但是它会为指示*你正在使用的数据库的问题添加标签。 – levelonehuman
@levelonehuman:这实际上非常标准的SQL –
不相关,但是:你不应该比较字符串和数字,比如'wi.on_hand_qty>'0''''0''是一个字符串常量,而不是数字。 '0'是一个数字 –