【问题标题】:SQL combine columns based on another columnSQL 根据另一列组合列
【发布时间】:2016-07-15 08:52:53
【问题描述】:

我有一个项目列表和这些项目可以位于的两个位置(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

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

谢谢

【问题讨论】:

    标签: sql sql-server join union


    【解决方案1】:

    您可以使用CASE WHEN 表达式:

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

    【讨论】:

    • 嗨,我之前试过这个,但它给了我一个。 “'=' 附近的语法不正确”错误?
    • 它现在工作了,我有一个 CASE Location WHEN。这就是给我错误的原因。
    • 如果有帮助不要忘记将其标记为答案。 @SanjayaWeerakkody
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-02
      • 1970-01-01
      • 2019-11-29
      • 1970-01-01
      • 1970-01-01
      • 2023-01-26
      • 1970-01-01
      相关资源
      最近更新 更多