SQL根据另一列

时间:2016-07-15 08:52:53

标签: sql sql-server join union

我已经获得了这些物品可以进入的物品清单和两个地点(X和Y)。这两个地点的物品数量不同。 因此,当有人为一些物品下订单时,可以从这两个地点中的任何一个拉出物品。

以下是'订单'我已经创建了表格,但它显示了两个位置和两个位置和可用库存。

ItemNumber          Location    Stock X     Stock Y
A                      X          12          32
B                      X          10          54
C                      X           5          23
A                      Y          54          30
C                      Y          65          36
D                      Y          76          23
E                      X          12          31
F                      X          32          19
F                      Y          72          40

我希望看到的是列中所请求位置的可用库存,而不是上面我已完成的两列中的位置和库存可用性。 结果表我想看的是,

ItemNumber          Location    Avail Stock
A                      X          12          
B                      X          10          
C                      X           5          
A                      Y          30
C                      Y          36
D                      Y          23
E                      X          12          
F                      X          32          
F                      Y          40

我无法理解这一点。伟大的,如果有人可以帮助或告诉我,如果它甚至可能。

由于

2 个答案:

答案 0 :(得分:3)

您可以使用CASE WHEN表达式:

SELECT ItemNumber,
       Location, 
       CASE WHEN Location = 'X' THEN [Stock X] 
            WHEN Location = 'Y' THEN [Stock Y] 
       END Avail_Stock 
FROM Orders

答案 1 :(得分:0)

您拥有union标记,因此:

SELECT ItemNumber,
       Location, 
       [Stock X] AS Avail_Stock
  FROM Orders
 WHERE Location = 'X'
UNION
SELECT ItemNumber,
       Location, 
       [Stock Y] AS Avail_Stock
  FROM Orders
 WHERE Location = 'Y'