2013-04-12 227 views
1

我正在处理一个查询,以查找在仓库之间传输的最佳数量。在一个查询中,我试图获取物料代码,WarehouseA中的物料的重新订货点,WarehouseB中的物料的再订货点以及WarehouseAWarehouseB的再订货点之和。SQL查询:对于同一列重复3次的不同值

我正在使用GUI,所以我尝试了三次调用Item Code字段和ROP(Reorder Point)字段。

SELECT ItemCode, ROP, ROP, ROP 
FROM Inventory 

有没有一种方法,我可以过滤每个独特的方式3个ROP领域? 例如第一个ROP字段显示的是再订购点,其中whse=A,第二个ROP字段显示再订购点,其中whse=B,第三个再订货点字段显示两者的总和。

+0

你为什么调用'ROP'场三次?名为'ROP'的标记只能引用数据库表中的一个字段。在表中不能有三个单独的字段,全部命名为“ROP”。您是否打算输入ROPA,ROPB和ROPC? “库存”表的模式是什么? –

+1

请显示你的桌子的结构 – sashkello

回答

1

使用直接插入选择:上述

SELECT 
    ItemCode, 
    (SELECT ii.ROP FROM Inventory ii WHERE ii.ItemCode = oi.ItemCode AND ii.whse='A') AS ROPA, 
    (SELECT ii.ROP FROM Inventory ii WHERE ii.ItemCode = oi.ItemCode AND ii.whse='B') AS ROPB, 
    (SELECT ii.ROP FROM Inventory ii WHERE ii.ItemCode = oi.ItemCode AND ii.whse='C') AS ROPC 
FROM Inventory oi 

假定ItemCode是关键。

0

如果我理解正确你的问题:

SELECT 
    I.ItemCode, 
    WHA.ROP AS A_ROP, 
    WHB.ROP AS B_ROP, 
    ISNULL(WHA.ROP,0) + ISNULL(WHB.ROP,0) AS Total_ROP 
FROM 
    Inventory AS I 
LEFT JOIN 
    WarehouseA AS WHA ON (WHA.ItemCode = I.ItemCode) 
LEFT JOIN 
    WarehouseB AS WHB ON (WHB.ItemCode = I.ItemCode)