日付フィールドを持つデータを保持するテーブルがあります。テーブルにデータが見つからない場合にデフォルト値で行を取得する方法
例:
|SCHEDULED_DATE |
---------------
|06-MAY-2016 |
|08-MAY-2016 |
|10-JUL-2016 |
今、私は、各月の日数のカウントを取得する必要があります。
SELECT CASE WHEN (
SELECT COUNT(*)
FROM SCHEDULE
WHERE SEQ = '429'
AND TO_CHAR((SCHEDULED_DATE),'MON-YYYY')='MAY-2016')=0
THEN 0
ELSE (SELECT COUNT(*)
FROM SCHEDULE
WHERE SEQ = '429'
AND TO_CHAR((SCHEDULED_DATE),'MON-YYYY')='MAY-2016')
END
AS NO_OF_DAYS, NVL(TO_CHAR((SCHEDULED_DATE),'MON'),'MAY') AS MONTH
FROM SCHEDULE
WHERE SEQ = '429';
NVL
で、私は私が私が値2を取得し、出力は次のようであるMAY
の月のこのクエリを実行すると
を実行する前に、各月の代替値を更新します。
|NO_OF_DAYS |MONTH|
------------ -----
|2 |MAY |
しかし、私は0として表示する必要がJUN
月の
|NO_OF_DAYS |MONTH|
------------ -----
|0 |JUN |
のようなものです。この
|NO_OF_DAYS |MONTH|
------------ -----
| | |
のようなものですが、とにかくありこれを達成するには?
注:明らかにされていない質問を更新しました。申し訳ありませんが、最初に正しく質問できませんでした。
私はあなたの質問を理解していません。クエリでは1行だけが返されます。しかし、3行の結果セットを表示しています。 –
@ GordonLinoffいいえ、私の例では、このクエリは、私のプログラム –
から動的に 'seq'と' month'値を取得します。 。繰り返します:あなたの質問のクエリは*正確に* 1行を返します。一致する行がない場合、カウントはゼロになります。あなたの全体的な質問は理にかなっていません。おそらく、別の質問をしてより完全なコードを表示する必要があります。 –