2016-07-15 30 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'