我是否可以从其他表的列输出满足特定条件的数据以显示在单行中

时间:2016-03-22 12:10:43

标签: sql-server

我目前正在使用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

1 个答案:

答案 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