0

私は他のいくつかの同様の質問を見てきましたが、どれも私が見つけた特定の状況に適合しません.

私はSQLの比較的初心者です。

レポートを作成するクエリを作成しています。この DB への読み取り専用アクセス権があります。3 つの行を 1 つの行に結合しようとしています。読み取りアクセスのみが必要な方法はすべて機能します。

そうは言っても、私が持っている 3 つの行は、非常に長いサブクエリによって取得されました。外殻は次のとおりです。

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

私がやろうとしているのは、次のように 3 つの行を 1 つの行に結合することです。

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

COALESCE()を使用してそれらを 1 つの列に入れることができることは承知していますが、3 つの別々の列を保持することをお勧めします。

ストアド プロシージャを作成または使用できません。

これを行うことは可能ですか?一般的なケースの例を教えてください。

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 に答える