SQL Server:将多行合并为一行

时间:2013-01-28 22:27:10

标签: windows tsql null subquery coalesce

我看了几个其他类似的问题,但没有一个适合我发现自己的特殊情况。

我是SQL的初学者。

我正在编写一个查询来创建报告。 我对此数据库具有只读权限。我正在尝试将三行合并为一行。任何只需要读访问权限的方法都可以。

话虽如此,我所拥有的三行是通过一个非常长的子查询获得的。这是外壳:

SELECT Availability,
       Start_Date,
       End_Date
FROM (
  -- long subquery goes here (it is several UNION ALLs)
  ...
) AS dual

以下是行:

Availability | Start_Date | End_Date
-------------------------------------
99.983       | NULL       | NULL
NULL         | 1/10/2013  | NULL
NULL         | NULL       | 1/28/2013

我要做的是将三行合并为一行,如下所示:

Availability | Start_Date | End_Date
-------------------------------------
99.983       | 1/10/2013  | 1/28/2013

我知道我可以使用 COALESCE()将它们放在一列中,但我更愿意保留三个单独的列

我无法创建或使用存储过程。

有可能这样做吗?我能举例说明一般情况吗?

1 个答案:

答案 0 :(得分:3)

您是否尝试过使用聚合函数:

SELECT max(Availability) Availability,
       max(Start_Date) Start_Date,
       max(End_Date) End_Date
FROM (
  -- long subquery goes here (it is several UNION ALLs)
  ...
) AS dual

如果您有其他列,则需要添加GROUP BY子句