質問: FORMAT_TIMESTAMP('%y%m%d',CURRENT_TIMESTAMP() ,'Asia/Tokyo') > > > *上記の場合、当日(CURRENT_TIMESTAMP)があれば、当該データを取得するが、 > > ない場合、zeroが返ってしまいます。 > > →これを「当日テーブルがない場合は、前日テーブルを参照する」ようにしたいです。 > > > *以下、サブクエリで使うと思われるSQLです。 ``` EXISTS(SELECT x,y,z FROM table WHERE y=z) ``` 参考(関数と演算子 | BigQuery | Google Cloud) サブクエリ-EXISTS すみませんが、どうぞよろしくお願いします。
回答: SQLでは、取得の分岐という考え方ではなく、取得後に分岐というふうに考えて下さい。 サブクエリーでの取得も可能ですが、ネストが深くなったり冗長だったりするので、多くの場合外部結合で取得した方が、簡潔な記述になります。 また、データの有無を判断するのには、caseよりcoalesce()を使用した方が簡潔になります。 情報が不足しているので適当ですが、イメージは以下になります。 ``` select coalesce(当日.x,前日.x) as x from メイン left join ( SELECT x,y,z FROM 日付のテーブル WHERE 日付=当日 ) 当日 on メイン.id=当日.id left join ( SELECT x,y,z FROM 日付のテーブル WHERE 日付=前日 ) 前日 on メイン.id=前日.id ```