sql >> データベース >  >> RDS >> Oracle

データがなくてもテーブルからデータを表示!!オラクル

    まず、あなたのアプリケーションはカレンダー テーブルから恩恵を受けるように思えます。カレンダー テーブルは、日付と日付に関する情報のリストです。

    次に、一時テーブルを使用せずにこれを行うことができます。アプローチは次のとおりです。

    with constants as (select min(thedate>) as firstdate from <table>)
         dates as (select( <firstdate> + rownum - 1) as thedate
                   from (select rownum
                         from <table> cross join constants
                         where rownum < sysdate - <firstdate> + 1
                        ) seq
                  )
    select dates.thedate, count(t.date)
    from dates left outer join
         <table> t
         on t.date = dates.thedate
    group by dates.thedate
    

    これがアイデアです。エイリアス定数は、テーブルの最も早い日付を記録します。エイリアスの日付は、一連の日付を作成します。内側のサブクエリは、rownum を使用して一連の整数を計算し、これらを最初の日付に追加します。これは、平均して 1 日あたり少なくとも 1 回の取引があることを前提としています。そうでない場合は、より大きなテーブルを使用できます。

    最後の部分は、日付に関する情報を戻すために使用される結合です。 count(*) の代わりに count(t.date) を使用していることに注意してください。これにより、テーブル内のレコード数がカウントされます。データのない日付の場合は 0 になります。



    1. SQLSELECTステートメントの列の名前変更

    2. 有効なjsonとコピーをpostgresテーブルに挿入します

    3. pdo無料結果

    4. idが一致する場合にmysqlから行を選択する