我看了几个其他类似的问题,但没有一个适合我发现自己的特殊情况。
我是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()将它们放在一列中,但我更愿意保留三个单独的列。
我无法创建或使用存储过程。
有可能这样做吗?我能举例说明一般情况吗?
答案 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
子句