あなたは、データ格納ツールで報告仕事をしようとしています。データベース(およびSQL)は、レポートを作成するのではなく、データを格納および取得するためのものです。レポートを作成するための特別なツールがあります。
データベース設計では、実際のデータを表または列名でエンコードするのは非常に不健全です。表名も列名も、従業員ID、日付、または他のビットの実際のデータを、名前の一部(および使用方法)に含めるべきではありません。実際のデータはフィールド内にのみ存在する必要があります。フィールドは異なるテーブルの列にあります。
あなたの説明から、基本表に従業員、活動、および日付の列が必要です。あなたは「現在の」一日のカウントをしたい場合は、任意の日に、あなたがしたい場合、あなたはまたのために表示される出力の「activity_date」の列を含めることができ
select employee, count(activity) ct
from table_name
where activity_date = SYSDATE
group by employee
で問い合わせることができますレポートが実行された日付。
「日付」の列名を「activity_date」とします。そして出力では、 "count"ではなく "ct"を列別名に使用しました。 DATEとCOUNTはSYSTIMEのような予約語です。これらを表名または列名として使用しないでください。これらのエイリアスをSQLの他の場所で参照する必要がないかぎり、それらをエイリアスとして使用できますが、依然として非常に悪い考えです。列を(名前または別名で)参照する必要があり、名前または別名がSYSDATEであるとします。 where節はどういう意味でしょうか?
where sysdate = sysdate
問題が表示されますか?
また、私はあなたの質問から言えません - これらのレポートをデータベースに保存することを考えていましたか?何のために? 1つのクエリだけを格納し、必要に応じて実行し(そして、カウントする必要のある「activity_date」)、入力パラメータを作成すると、いつでも将来の任意の日付のクエリを実行できます。ベーステーブルが適切に維持されている限り、実際の日次レポートをデータベースに格納する必要はありません。
幸運を祈る!
エイリアスとして使用できますが、予想通りに外挿されず、単に "SYSDATE"という単語のままになります –
SYSDATE自体は使用できません。 SYSDATEを使わずに現在の日付を取得する方法はありますか? – user3144072
エイリアスが動的になるようにクエリを動的に作成できます。あなたがそれをどうやって行うのかは、私たちがどんな種類の報告をしているかによって決まります。レポートアプリケーションを使用していますか? 'SQL * Plus'を使ってテキストレポートを生成しますか?他に何か? –