Sql 多个Where子句作为单独的列
我有一个销售订单表,如下所示:Sql 多个Where子句作为单独的列,sql,Sql,我有一个销售订单表,如下所示: SALESORDERCODE ITEMCODE WAREHOUSECODE SO-605338 ITEM-003200 MAIN SO-605338 ITEM-016328 PFC WAREHOUSECODE ITEMCODE UNITSINSTOCK MAIN ITEM-003200 1 MAIN ITEM-016328 2 PFC
SALESORDERCODE ITEMCODE WAREHOUSECODE
SO-605338 ITEM-003200 MAIN
SO-605338 ITEM-016328 PFC
WAREHOUSECODE ITEMCODE UNITSINSTOCK
MAIN ITEM-003200 1
MAIN ITEM-016328 2
PFC ITEM-016328 3
PFC ITEM-003200 4
我还有一个库存表:
SALESORDERCODE ITEMCODE WAREHOUSECODE
SO-605338 ITEM-003200 MAIN
SO-605338 ITEM-016328 PFC
WAREHOUSECODE ITEMCODE UNITSINSTOCK
MAIN ITEM-003200 1
MAIN ITEM-016328 2
PFC ITEM-016328 3
PFC ITEM-003200 4
有谁能帮我完成一系列连接,这些连接将输出:
SALESORDERCODE ITEMCODE UNITS IN MAIN UNITS IN PFC
SO-605338 ITEM-003200 1 3
SO-605338 ITEM-016328 2 4
我可以编写一个WHERE
子句来输出MAIN或PFC,但我需要将列并排输出
谢谢你的帮助 如果仅限于这两种情况,您可以使用案例陈述:
否则,根据您的RDBMS平台,您可能可以研究数据透视。不确定它是否在没有SQL FIDLE的情况下工作,但我的第一个想法是:
select sot.SALESORDERCODE,sot.ITEMCODE, sum(main.UNITSINSTOCK), sum(pfc.UNITSINSTOCK)
from sales_order_table sot
left join inventory_table main on sot.ITEMCODE=main.ITEMCODE and main.WAREHOUSECODE='MAIN'
left join inventory_table pfc on sot.ITEMCODE=pfc.ITEMCODE and pfc.WAREHOUSECODE='PFC'
group by sot.SALESORDERCODE,sot.ITEMCODE
如果同一产品在主产品或pfc的库存表中出现两次,则其总和为。其他仓库代码呢?我们需要一个数据透视吗?您可以在
库存
表上使用两个联接获得结果-一列中所需的每个仓库代码都有一个联接:
select
so.SALESORDERCODE,
so.ITEMCODE,
i_main.UNITSINSTOCK UnitsInMain,
i_pfc.UNITSINSTOCK UnitsInPFC
from SalesOrder so
left join Inventory i_main
on so.ItemCode = i_main.ItemCode
and i_main.WAREHOUSECODE = 'Main'
left join Inventory i_pfc
on so.ItemCode = i_pfc.ItemCode
and i_pfc.WAREHOUSECODE = 'PFC';
看。您会注意到,当您在INVENTORY
表上离开JOIN时,您将包括要返回的仓库代码的过滤器
还不清楚每个仓库中是否需要总共的单元,若需要,则可以使用带有CASE表达式的聚合函数重写:
select
so.SALESORDERCODE,
so.ITEMCODE,
sum(case when i.WAREHOUSECODE = 'Main' then i.UNITSINSTOCK end) UnitsInMain,
sum(case when i.WAREHOUSECODE = 'PFC' then i.UNITSINSTOCK end) UnitsInPFC
from SalesOrder so
left join Inventory i
on so.ItemCode = i.ItemCode
group by so.SALESORDERCODE,
so.ITEMCODE;
请参见这是正确的,但从预期结果来看,他们似乎不希望聚合单位库存
,这部分不清楚。使用聚合/大小写和单个连接也可以编写稍微不同的代码。003200在PFC中不应该有4个单元吗?