私は従業員の時間記録についていくつかのレポートを作成しようとしています。
この質問に特化した2つの表があります。従業員はMembers
テーブルに一覧表示され、毎日、彼らが実行した作業の時間エントリを入力し、Time_Entry
テーブルに保存されます。
SQL Fiddleでの設定例:http ://sqlfiddle.com/#!3/ e3806/7
私は行くよ最終結果は番組表であるALLMembers
列リストで、その後は他の列に照会した日のために彼らの合計時間が表示されます。
問題はTime_Entry
、特定のメンバーのテーブルに行がない場合、そのメンバーの行があることです。私はいくつかの異なる結合タイプ(左、右、内部、外部、完全外部など)を試しましたが、(SQL Fiddleの最後の例に基づいて)希望どおりの結果が得られないようです。
/*** Desired End Result ***/
Member_ID | COUNTTime_Entry | TIMEENTRYDATE | SUMHOURS_ACTUAL | SUMHOURS_BILL
ADavis | 0 | 11-10-2013 | 0 | 0
BTronton | 0 | 11-10-2013 | 0 | 0
CJones | 0 | 11-10-2013 | 0 | 0
DSmith | 0 | 11-10-2013 | 0 | 0
EGirsch | 1 | 11-10-2013 | 0.92 | 1
FRowden | 0 | 11-10-2013 | 0 | 0
11-1の特定の日付をクエリしたときに私が現在得ているもの:
Member_ID | COUNTTime_Entry | TIMEENTRYDATE | SUMHOURS_ACTUAL | SUMHOURS_BILL
EGirsch | 1 | 11-10-2013 | 0.92 | 1
これは、EGirschの2013年11月10日付けの1つのタイムエントリ行に基づいて正しいですが、レポートを取得し、最終的にこの情報のWebダッシュボード/レポートを取得するには、他のメンバーのゼロを表示する必要があります。
これは私の最初の質問です。Joinクエリなどを検索しましたが、正直に言って、この関数が何と呼ばれるかわからないので、これが重複しておらず、解決策を見つけようとしている他の人にも役立つことを願っています同様の問題。
WHERE
としますAND
。私は元々エイリアスを使用していましたが、sqlfiddleはそれを気に入らなかったので、完全な形式にしました。他のSQLのヒントもありがとうございます。あなたは勧めISNULL
またはCOALESCE
データにするために0の代わりにNULL
?再度、感謝します!