我目前正在使用SSMS 2014学习SQL,我想知道是否可以创建一个SELECT语句,以便它将连接两个表,但是这样来自第二个表的数据显示在单独的列中不同的值满足某些条件,以便输出显示在同一行?
我不确定如何恰当地解释这个问题所以我会举一个例子。
例如,如果我们有2个表:
ProductID ProductName More columns... --------- ----------- ... 1 Shoes ... 2 Shirt ...
Product Color Amount ------- ----- ------ 1 Black 5 1 Red 3 2 Black 1 2 Red 6 2 White 3
我希望select语句返回如下内容:
ProductName Col:Black Col:Red Col:White ----------- --------- ------- --------- Shoes 5 3 NULL Shirt 1 6 3
如何进行此类查询,甚至可以在T-SQL中进行查询?有没有办法在SQL中指定IF语句,以便在满足某些条件时返回日期。
到目前为止,我只能得到这样的输出,但这不是我想要的:
Product Color Amount ------- ----- ------ Shoes Black 5 Shoes Red 3 Shirt Black 1 Shirt Red 6 Shirt White 3
答案 0 :(得分:1)
您可以使用CASE EXPRESSION进行条件聚合:
SELECT t.productName,
MAX(CASE WHEN s.Color = 'Black' then s.amount end) as Col_Black,
MAX(CASE WHEN s.Color = 'Red' then s.amount end) as Col_Red,
MAX(CASE WHEN s.Color = 'White' then s.amount end) as Col_White
..........
FROM Table1 t
LEFT OUTER JOIN Table2 s
ON(t.productID = s.product)
GROUP BY t.productName