2017-02-20 9 views
1

私は、ジョブのリストがあるデータベースのセットアップを持っています。各ジョブは、1〜複数の場所にあります。ユーザーは、任意の場所でジョブを申請することができます。彼らは別の場所で同じ仕事に別々に応募することができます。各ジョブアプリケーションは、進行状況に応じて、1から新しく4までの4つのステータスを持ちます。SQL集計クエリ - カウントヌル

SQLクエリを実行して、すべてのジョブの概要、すべての場所、各ステータスごとに関連するアプリケーションの概要を表示する必要があります。したがって、たとえば

+ ---- + -------- + ------ + ----- + 
| Job | Location | Status | Count | 
+ ---- + -------- + ------ + ----- + 
| 1000 | 1  | 1  | 7  | 
| 1000 | 1  | 2  | 0  | 
| 1000 | 1  | 3  | 1  | 
| 1000 | 1  | 4  | 1  | 
| 1000 | 2  | 1  | 4  | 
| 1000 | 2  | 2  | 2  | 
| 1000 | 2  | 3  | 0  | 
| 1000 | 2  | 4  | 8  | 
+ ---- + -------- + ------ + ----- + 

さらに、4つのステータスカウントを合計して同じリストにまとめるのが理想的です。

これは私がこれまでに書いたSQL文です: - それは作品

SELECT B.JobID, B.LocationID, B.ApplicationStatusID, COUNT(B.JobID) AS CountOfResults 
FROM Job AS A 
JOIN JobApplication AS B ON A.JobID = B.JobID 
LEFT JOIN JobApplicationStatus AS C ON B.ApplicationStatusID = C.JobApplicationStatusID 
WHERE A.BrandID = 1 
GROUP BY B.JobID, B.LocationID, B.ApplicationStatusID 

、バー二つのことを: -

  • 私は合計数を(取得する方法がわからないんですか私はカウントが0に

誰が助言でしたここでそれは結果を示していない

  • )この後、サーバー側を行うことができますたとえそれが0であっても、すべての場所ですべてのジョブに対して4つのステータスを取得する方法は?私は、左のジョインについて他のスレッドについて様々な助言を見てきましたが、私はまだ成功しませんでした。

    ありがとうございます!業務アプリケーションのステータステーブルでジョブの場所を想定すると、ジョブの表の例のデータに

    を表示、ID番号5とアドレスのテーブルで6,7

    Job 
    + ------ + ---------- + ------------------- + 
    | Job ID | Job Title | Description   | 
    + ------ + ---------- + ------------------- + 
    | 1  | Developer | My Nice Description | 
    | 2  | Full Stack | Another Description | 
    + ------ + ---------- + ------------------- + 
    
    Job Location 
    + -- + ------ + ----------- + 
    | ID | Job ID | Location ID | 
    + -- + ------ + ----------- + 
    | 1 | 1  | 5   | 
    | 2 | 1  | 6   | 
    | 3 | 2  | 5   | 
    | 4 | 2  | 6   | 
    | 5 | 2  | 7   | 
    + -- + ------ + ----------- + 
    
    Job Application 
    + -- + ------- + ------ + ----------- + --------------------- + 
    | ID | User ID | Job ID | Location ID | Application Status ID | 
    + -- + ------- + ------ + ----------- + --------------------- + 
    | 1 | 1  | 1  | 5   | 1      | 
    | 2 | 1  | 1  | 6   | 2      | 
    | 3 | 2  | 1  | 5   | 1      | 
    | 4 | 2  | 2  | 7   | 4      | 
    + -- + ------- + ------ + ----------- + --------------------- + 
    

    : - -

    編集

    • ユーザー1は、場所5のジョブ1に適用され、アプリケーションのステータスは1です。

    • ユーザ1は、位置6でジョブ1のために適用され、そのアプリケーションのステータスが2

    • ユーザ2が位置5にジョブ1のために適用され、そのアプリケーションのステータスが1

    • ユーザ2でありますまた、場所7でジョブ2に適用され、そのアプリケーションの状態は、4

    である私は、ここを探しています何、以下を返すために、クエリのようになります。 -

    Result 
    + --- + -------- + ------ + ----- + 
    | Job | Location | Status | Count | 
    + --- + -------- + ------ + ----- + 
    | 1 | 5  | 1  | 2  | 
    | 1 | 5  | 2  | 0  | 
    | 1 | 5  | 3  | 0  | 
    | 1 | 5  | 4  | 0  | 
    | 1 | 6  | 1  | 0  | 
    | 1 | 6  | 2  | 1  | 
    | 1 | 6  | 3  | 0  | 
    | 1 | 6  | 4  | 0  | 
    + --- + -------- + ------ + ----- + 
    

    このように0が表示されます。カウントは、そのステータス番号のジョブアプリケーションの数です。 4つのステータス番号があり、JobApplicationStatusという結合テーブルに設定されています。

  • +0

    で共通テーブル式と相関サブクエリを使用することにより、必要な合計金額を得ることができることを追加したいですか?また、期待される出力を表示してください。 –

    +0

    上記の予想される出力を表示するように更新しました。 SQL Server 2014. –

    +0

    ここで、合計を表示するかどうかはその列にする必要がありますか? –

    答えて