0

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

我是 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()将它们放在一列中,但我更愿意保留三个单独的列

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

是否有可能做到这一点?我可以举一个一般情况的例子吗?

4

1 回答 1

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子句

于 2013-01-28T22:29:37.677 回答