SQL-组合两个Select语句
我对该站点有些陌生,对SQL仍然很陌生,我正在尝试在服务器命令操作中为RedPrairie(一个仓库管理系统)编写一个查询。我发现我有权限编写查询,而其中一个自定义DDA效率低下,因为它结合了分段处理单元和分段重量,但没有将已计划出站的和未计划出站的分开 出于这个原因,我试图提出一个查询,但在组合查询时遇到了很多困难。我的查询将使用相同的表,但我希望它将计划的和未计划的列分开。我已尝试进行以下工作:SQL-组合两个Select语句,sql,Sql,我对该站点有些陌生,对SQL仍然很陌生,我正在尝试在服务器命令操作中为RedPrairie(一个仓库管理系统)编写一个查询。我发现我有权限编写查询,而其中一个自定义DDA效率低下,因为它结合了分段处理单元和分段重量,但没有将已计划出站的和未计划出站的分开 出于这个原因,我试图提出一个查询,但在组合查询时遇到了很多困难。我的查询将使用相同的表,但我希望它将计划的和未计划的列分开。我已尝试进行以下工作: [SELECT addr.host_ext_id destination, (SELEC
[SELECT addr.host_ext_id destination,
(SELECT COUNT(DISTINCT iv.lodnum)
FROM inventory_view iv,
locmst lm,
aremst am,
shipment_line sl,
shipment sh,
adrmst addr,
uc_invlod uil,
uc_load_grp ulg
WHERE lm.wh_id = 'MWCCD'
AND iv.lodnum=uil.lodnum
AND am.arecod = lm.arecod
AND am.wh_id = lm.wh_id
AND lm.stoloc = iv.stoloc
AND lm.wh_id = iv.wh_id
AND addr.host_ext_id = ulg.dest_code
AND ulg.client_id IS NOT NULL
AND addr.adr_id = sh.rt_adr_id
AND sl.ship_line_id = iv.ship_line_id
AND sh.ship_id = sl.ship_id
AND sh.stop_id IS NULL
AND am.fwiflg = 1
AND am.stgflg = 1) AS Unplanned_Hu,
(SELECT SUM(DISTINCT uil.weight_kg)
FROM inventory_view iv,
locmst lm,
aremst am,
shipment_line sl,
shipment sh,
adrmst addr,
uc_invlod uil,
uc_load_grp ulg
WHERE lm.wh_id = 'MWCCD'
AND iv.lodnum=uil.lodnum
AND am.arecod = lm.arecod
AND am.wh_id = lm.wh_id
AND lm.stoloc = iv.stoloc
AND lm.wh_id = iv.wh_id
AND addr.host_ext_id = ulg.dest_code
AND ulg.client_id IS NOT NULL
AND addr.adr_id = sh.rt_adr_id
AND sl.ship_line_id = iv.ship_line_id
AND sh.ship_id = sl.ship_id
AND sh.stop_id IS NULL
AND am.fwiflg = 1
AND am.stgflg = 1) AS Unplanned_Weight_KG,
(SELECT COUNT(DISTINCT iv.lodnum)
FROM inventory_view iv,
locmst lm,
aremst am,
shipment_line sl,
shipment sh,
adrmst addr,
uc_invlod uil,
uc_load_grp ulg
WHERE lm.wh_id = 'MWCCD'
AND iv.lodnum=uil.lodnum
AND am.arecod = lm.arecod
AND am.wh_id = lm.wh_id
AND lm.stoloc = iv.stoloc
AND lm.wh_id = iv.wh_id
AND addr.host_ext_id = ulg.dest_code
AND ulg.client_id IS NOT NULL
AND addr.adr_id = sh.rt_adr_id
AND sl.ship_line_id = iv.ship_line_id
AND sh.ship_id = sl.ship_id
AND sh.stop_id IS NOT NULL
AND am.fwiflg = 1
AND am.stgflg = 1) AS Planned_HU,
(SELECT SUM(DISTINCT uil.weight_kg)
FROM inventory_view iv,
locmst lm,
aremst am,
shipment_line sl,
shipment sh,
adrmst addr,
uc_invlod uil,
uc_load_grp ulg
WHERE lm.wh_id = 'MWCCD'
AND iv.lodnum=uil.lodnum
AND am.arecod = lm.arecod
AND am.wh_id = lm.wh_id
AND lm.stoloc = iv.stoloc
AND lm.wh_id = iv.wh_id
AND addr.host_ext_id = ulg.dest_code
AND ulg.client_id IS NOT NULL
AND addr.adr_id = sh.rt_adr_id
AND sl.ship_line_id = iv.ship_line_id
AND sh.ship_id = sl.ship_id
AND sh.stop_id IS NOT NULL
AND am.fwiflg = 1
AND am.stgflg = 1) AS Planned_Weight_KG
FROM inventory_view iv,
locmst lm,
aremst am,
shipment_line sl,
shipment sh,
adrmst addr,
uc_invlod uil,
uc_load_grp ulg
WHERE lm.wh_id = 'MWCCD'
AND iv.lodnum=uil.lodnum
AND am.arecod = lm.arecod
AND am.wh_id = lm.wh_id
AND lm.stoloc = iv.stoloc
AND lm.wh_id = iv.wh_id
AND addr.host_ext_id = ulg.dest_code
AND ulg.client_id IS NOT NULL
AND addr.adr_id = sh.rt_adr_id
AND sl.ship_line_id = iv.ship_line_id
AND sh.ship_id = sl.ship_id
AND am.fwiflg = 1
AND am.stgflg = 1
GROUP BY addr.host_ext_id]
问题是,尽管它按我想要的方式分隔列,但无论addr.host\u ext\u id如何,它都计算不正确。每个addr.host\u ext\u id的计划/计划HU数和权重都应该是唯一的
我们将非常感谢您为此提供的任何帮助和时间!另外,我想指出的是,通过使用UNION ALL,我确实尝试了更简单的方法,并且它一直将列组合在一起。将
adrmst
表的主查询中的别名更改为子查询中使用的其他名称,例如添加到addr1
。然后,通过添加到每个子查询条件,可以将addr1.host\u ext\u id
与每个子查询addr.host\u ext\u id
连接:
AND addr.host_ext_id = addr1.host_ext_id
我认为这一修正肯定会有所帮助
也考虑重写查询,使用Gordon Linoff建议的“代码>连接< /代码>语法。这使它更具可读性。
我的第一个帮助是坚持使用显式join
语法重写查询。如果您正在学习SQL,有一条简单的规则:决不要在from
子句中使用逗号。我会研究并重写。现在还不习惯加入!哇,事实上就是这样。太疯狂了!现在它们是我一直在寻找的唯一数字。非常感谢你!