2016-09-12 11 views
-3

joinクエリで2つの条件の問題が発生しました。問題はクエリが左のサイトだけを返すのに対して、右のサイトはNULLしか含んでいないことです。データの種類が一致していることを確認しました。何がうまくいかないでしょうか?LEFT joinは右側にNULLだけを返します。

SELECT t2.YEAR_NUMBER 
    ,t2.WEEK_NUMBER 
    ,t2.STOCK_RIC 
    ,t1.SENT_POS_WEIGHTED 
    ,t1.SENT_NEUT_WEIGHTED 
    ,t1.SENT_NEG_WEIGHTED 
    ,t1.OBSERVATIONS 
    ,t1.AV_W_RELEVANCE 
    ,t1.AV_W_LNKD_CNT1 
    ,t1.AV_W_ITEM_CNT1 
INTO res 
FROM Structure2016 t2 left JOIN 
    pre t1 
    ON t1.WEEK_NUMBER = t2.WEEK_NUMBER AND t1.STOCK_RIC = t2.STOCK_RIC 
ORDER BY STOCK_RIC, WEEK_NUMBER 

EDIT:表がどのように見えるかのような簡単な例です。 STOCK_RIC列はそれが正常に動作する必要があり、現在、char型(13)

TABLE Structure2016: 

    STOCK_RIC  YEAR WEEK_NUMBER 
    JPM.N   2016 1 
    JPM.N   2016 2 
    JPM.N   2016 3 



    TABLE pre: 
    STOCK_RIC WEEK_NUMBER SENT_POS_WEIGHTED 
    JPM.N   5    0.1 
    JPM.N   3    0.9 
    JPM.N   1    0.1 
    JPM.N   10   0.1 

    Result should then look like 
    STOCK_RIC  WEEK_NUMBER SENT_POS_WEIGHTED 
    JPM.N    1    0.1 
    JPM.N    2    NULL 
    JPM.N    3    0.9 
+7

これは、クエリの「右側」に一致するレコードがない場合に起こるはずのことです。結合の中に2つの成分の 'and'条件があります。つまり、右側のレコードと一致するためには、それらの別々の条件の両方が"真 "でなければなりません。 –

+0

希望する入出力は何ですか? – Teja

+4

?そのための左結合があります。 –

答えて

0

のある、私はあなたが提供されているサンプルを構築し、ここで結果

STOCK_RIC WEEK_NUMBER SENT_POS_WEIGHTED 
JPM.N   1    0.1 
JPM.N   2    NULL 
JPM.N   3    0.9 

私が使用したコードは

declare @table table(
    STOCK_RIC varchar(10), 
    YEAR int, 
    WEEK_NUMBER int 
) 
declare @pre table(
    STOCK_RIC varchar(10), 
    WEEK_NUMBER int, 
    SENT_POS_WEIGHTED decimal(3,1) 
) 

    insert into @table(STOCK_RIC,YEAR,WEEK_NUMBER) 
    select 'JPM.N',2016,1 
    union 
    select 'JPM.N',2016,2 
    union 
    select 'JPM.N',2016,3 

    insert into @pre(STOCK_RIC,WEEK_NUMBER,SENT_POS_WEIGHTED) 
    select 'JPM.N',5,0.1 
    union 
    select 'JPM.N',3,0.9 
    union 
    select 'JPM.N',1,0.1 
    union 
    select 'JPM.N',10 ,0.1 


    select t.STOCK_RIC,t.WEEK_NUMBER,p.SENT_POS_WEIGHTED 
    from @table t 
    left join @pre p on t.STOCK_RIC = p.STOCK_RIC and t.WEEK_NUMBER = p.WEEK_NUMBER 
ました

あなたが投稿したコードに問題がないようです

+0

です。私は列STOCK_RICに何か問題があると思います - それは形式ですか? – harryb

+0

このフィールドだけで内部結合をしようとするとSTOCK_RIC、どんな出力? – Monah

+0

done ..残念ながら私は出力が全く得られません – harryb

0

私がそれを伝えることができる唯一のものエラーはあなたのorder by節です。 t.STOCK_RIC, t.WEEK_NUMBERまたはp.STOCK_RIC, p.WEEK_NUMBERを指定する必要があります。

関連する問題