SQL 基于另一列合并列

SQL combine columns based on another column

我有一个项目列表和两个位置(X 和 Y),这些项目可以是 in.these两个位置有不同数量的这些项目。 因此,当有人为几件商品下订单时,可以从这两个位置中的任何一个位置提取这些商品。

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

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

我想看到的是列中所请求位置的可用库存,而不是我上面所做的两列中的位置和库存可用性。 结果table我想看的是,

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

我只是无法理解这个问题。如果有人可以帮助或告诉我是否可能,那就太好了。

谢谢

您可以使用 CASE WHEN 表达式:

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

您有 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'