2011-07-23 9 views
0

でstatutを得る:2つのテーブルに参加:私はこのクエリを持って一つのデータテーブルとstatutの一つのテーブルをしていないentrie

Show_Code Statut_ID Count 
564900   2   1 
568127   2   1 

そして、私はこのstatutテーブルを持っている:

SELECT c.Show_Code, req.Statut_ID, COUNT(req.Statut_ID) 'Count' 
FROM [Case] c 
JOIN Request req ON req.Case_Number = c.Number 
GROUP BY c.Show_Code, req.Statut_ID 

結果は

:(Ref_RequestStatut)

ID Name 
1 Test 
2 Test2 

は、どのように私はこの結果を得ることができます

Show_Code Statut_ID Count 
564900   1   0 
564900   2   1 
568127   1   0 
568127   2   1 

私も、これらの値を持たないた、すべてのstatutをしたいですか?あなたはSQL Server 2005以降を使用している場合

+0

あなたのケーステーブルの構造は何ですか - あなたにもそれを投稿することができますか? 'r.Statut_ID'が実際に' r.ID'(固定)する必要があります: –

+0

は 'Case'が、私はこの作品を作ってみましたナンバーとShow_Code列に – FRO

答えて

0

ありがとう:

WITH counted AS (
    SELECT c.Show_Code, req.Statut_ID, COUNT(req.Statut_ID) 'Count' 
    FROM [Case] c 
    JOIN Request req ON req.Case_Number = c.Number 
    GROUP BY c.Show_Code, req.Statut_ID 
), 
showcodes AS (
    SELECT DISTINCT Show_Code 
    FROM counted 
) 
SELECT 
    s.Show_Code, 
    r.ID AS Statut_ID, 
    Count = ISNULL(c.Count, 0) 
FROM showcodes s 
    CROSS JOIN Ref_RequestStatut r 
    LEFT JOIN counted c ON s.Show_Code = c.Show_Code AND r.ID = c.Statut_ID 
ORDER BY 
    s.Show_Code, 
    r.ID 
+0

が含まれている、私は私は1つのマイナーなミスを犯した –

+0

することができませんでした。それ以外は、これはうまくいくはずです。私は、そのハードコーディングされた結果と 'counted'副選択(OPの最初のクエリである)を交換し、(あまりにもハードコードされた行セットなど)' Ref_RequestStatut'のための別のCTEを追加することで、それをテストしました。 'showcodes'は、' counted'サブクエリによって返されるすべての明白な 'Show_Code'値です。これは、REFからStatut IDを持つ 'counted'から表示コードの全ての組み合わせをもたらす' Ref_RequestStatut'と交差接合されています。表。今欠けているのはカウントだけです( 'left join counted')。 –

関連する問題