0

経験が浅いので質問の仕方がわかりませんが、よろしくお願いします。

SELECTステートメントを使用して保留中のアプリケーション (つまり、完了日がない) を抽出しcount、それらの合計 (およびその他のカウント) を計算しています。収集する必要がある特定のプロジェクト タイプがあります。そのうち 8 つのうち、現在保留中の申請があるのは 4 つだけです。カウント列に 0 を含む他のプロジェクト タイプを表示する必要があります。保留中かどうかに関係なく、すべてのデータを取得するクエリと結合しようとすると、現在保留中のアプリケーションがある 4 つのプロジェクト タイプの行が重複します (count 列を除く)。プロジェクト タイプ テーブルに結合したままにすると、NULL 行が表示されます。どちらも私が欲しいものではありません。誰か提案はありますか?

ユニオンの出力:

General Construction       0    0       90    0
General Coverage           0    0       90    0
General Coverage           1    740     90    90
General Renewal            0    0       90    0
Individual Construction    0    0       90    0
Individual Coverage        0    0       180   0
Individual Renewal         0    0       90    0
Individual Renewal         2    1027    90    180
Approval                   0    0       90    0
Approval                   22   565     90    1980
Other - Renewal            0    0       90    0
Other - Renewal            21   1119    90    1890

必要な '0' 行を含まない出力:

General Coverage           1    740     90    90
Individual Renewal         2    1027    90    180
Other - Renewal            21   1119    90    1890
Approval                   22   566     90    1980

私が見たい出力は次のとおりです。

    General Construction        0   0    90    0
    General Coverage            1   740  90    90
    General Renewal             0   0    90    0
    Individual Construction     0   0    90    0
    Individual Coverage         0   0    180   0
    Individual Renewal          2   1027 90    180
    Approval                    22  565  90    1980
    Other - Renewal             21  1119 90    1890    

あなたが私を助けるのを助けるために私が提供できる他のものを教えてください.

4

1 に答える 1

0

列の名前などは提供しません。

必要なのは、すべての有効な値を含むドライバー テーブルです。left outer joinその後、必要な結果セットを取得するために使用できます。

select driver.val, coalesce(q.col2, 0), coalesce(q.col3, 0), coalesce(q.col4, 0)
from (select 'General Construction' as val from dual union all
      select 'General Coverage'  as val from dual union all
      select 'General Renewal'  as val from dual union all
      select 'Individual Construction' as val from dual union all
      select 'Individual Coverage'  as val from dual union all
      select 'Individual Renewal' as val from dual union all
      select 'Approval' as val from dual union all
      select 'Other - Renewal' as val from dual
     ) driver left outer join
     (query without 0 rows) q
     on driver.val = q.col1

0 ではなく NULL で問題coalesce()ない場合は、 は必要ありません。

于 2013-01-31T15:54:10.120 に答える