2017-02-08 12 views
0

に存在しないために内部結合を作成します。行は、私は3つのテーブル持っ0値

  • 第1 Weekテーブル
  • セカンドReferenceテーブル
  • 第三表Innerテーブル

が、私を内側のテーブルに何らかの問題があります。

は私がFinal_table と同じ内部テーブルに存在し、

が、私はそれを行うにはSQLでクエリを必要とする内部テーブルに存在しない行に対して0を入れていない一部の行を追加します。

私は、内部テーブルを持っていると私はtblWeekReferenceテーブルからそれを作成しませんが、私は彼らに

Week RefNumber Value     
01.08.16 100 15     
01.08.16 200 3     
08.08.16 100 8     
16.08.16 200 7     

Week        
01.08.2016       
08.08.2016       
16.08.2016 

Final_table

   Week RefNumber Value 
RefNumber  01.08.16 100 15 
100    01.08.16 200 3 
200    01.08.16 300 0 
300    08.08.16 100 8 
       08.08.16 200 0 
       08.08.16 300 0 
       16.08.16 100 0 
       16.08.16 200 0 
       16.08.16 300 7 

Full_tblを使用できることに注意してください

enter image description here

+0

を使用してそれを達成することができますか?たぶん句読点も使用していますか? – HoneyBadger

+0

サンプルデータをテキストとして提供できますか?理想的には、一時テーブルやテーブル変数として([ヘルプとアドバイス](http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seemsのこの質問を参照してください) -to-me-to-be-a-very-simple-sql-query))? –

答えて

1

あなたは、あなたが実際にやろうとしているものを言い換えることができますRight JoinCross Join

SELECT X.WEEK,X.RefNumber,ISNULL(T.Value,0) AS Value 
FROM [Full_Tbl] T 
    RIGHT JOIN 
     (SELECT WEEK,RefNumber 
      FROM [WEEK] 
     CROSS JOIN [RefNumber]) X 
     ON X.[WEEK]=T.[Week] AND X.[RefNumber] = T.[RefNumber] 
ORDER BY X.[WEEK] 
+0

はいいいえ – Ali

+0

私はあなたの助けを感謝します – Ali

0

私はあなたの質問を正しく(主に添付された画像から)得ることを望みます。ここで

、これは動作するはずです:

SELECT f.week, f.refnumber, (CASE WHEN f.value IS NULL THEN 0 ELSE f.value END) as value 
FROM Full_tbl f 
RIGHT JOIN refnumber on f.refnumber = refnumber.refnumber 

を基本的に我々は何をすべきかです:

  1. 我々は(JOIN RIGHTザッツ ')refnumber' テーブルからすべての行を取得します。このrefnumberに関連付けられている値は0

0

として提示することがnullの場合は

  • は、私たちはケースを使用して私たちすることができますunion allないことWeekRefNumberの組み合わせにすべてを取得するためにwhere not exists()を使用していますcross joininner_tableに存在します。

    select [Week], RefNumber, [Value] 
        from inner_table 
    union all 
    select [Week], RefNumber, [Value]=0 
        from [Week] w 
        cross join RefNumber r 
        where not exists (
         select 1 
         from inner_table as i 
         where i.[Week] = w.[Week] 
         and i.RefNumber = r.RefNumber 
        ) 
    
  • +0

    はいいいえ、あなたの援助が適切です – Ali

    関連する問題