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'
我有一个项目列表和两个位置(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'