从多行中选择值

时间:2013-07-26 05:42:37

标签: sql sql-server

我根据特定的id

从数据库中获得了两行
ID         Address    Res_Address     Office_Address
-------------------------------------------------
4          C 60            0               1
4          D 90            1               0

我只想在ResAddress中选择具有标志res_address 1的地址,并通过select语句选择具有Office_address 1作为OfficeAddress的标志。 我不想使用存储过程。

1 个答案:

答案 0 :(得分:2)

尝试

SELECT ID,
       MIN(CASE WHEN Res_Address    = 1 THEN Address END) ResidentAddress,
       MIN(CASE WHEN Office_Address = 1 THEN Address END) OfficeAddress
FROM 
(
  SELECT -- your subquery that returns two rows goes here
) q
 GROUP BY ID

示例输出:

| ID | RESIDENTADDRESS | OFFICEADDRESS |
----------------------------------------
|  4 |            D 90 |          C 60 |

这是 SQLFiddle 演示

更新如果我理解您的评论,您可以使用COALESCE()

SELECT ID,
       COALESCE(MIN(CASE WHEN Res_Address = 1    THEN Address END), '0') ResidentAddress,
       COALESCE(MIN(CASE WHEN Office_Address = 1 THEN Address END), '0') OfficeAddress
FROM 
(
  SELECT * FROM Table1
) q
 GROUP BY ID

这是 SQLFiddle 演示