2016-07-15 31 views
1

我已经列出了这些项目可以在的项目和两个位置(X和Y)。这两个位置具有不同数量的这些项目。 所以当有人下了几件物品的订单时,这些物品可以从这两个位置中的任何一个拉出。SQL将基于另一列的列结合起来

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

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 

我只是不能让我的头围绕这个去做。如果任何人都可以帮助或告诉我,如果它甚至是可能的,那么很棒

感谢

回答

3

可以使用CASE WHEN表达:

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

HI,我想这更早,但它给了我一个。 “不正确的语法靠近'='”错误? – Sinnerv

+0

你可以发布你已经尝试过吗? @SanjayaWeerakkody – Sankar

+0

其工作现在我有一个CASE位置何时。那是什么给了我错误。 – Sinnerv

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'