2017-02-01 17 views
-3

以下のコードで何が問題になっていますか?両方のselect文の間で結合する必要があります。私はそれがこのSQLユニオンクエリの問題

のようになりたい

select 
    tt.SlpName, tt.Sum, tt.Duedate 
from 
    (select 
     t3.docnum as 'Invoice', null as 'Receipt', 
     isnull(t6.SlpName, t6.SlpName) 'slpname', 
     null as 'Sum', null as 'Duedate' 
    from 
     oitr t0 
    inner join 
     ITR1 t1 on t0.ReconNum = t1.ReconNum 
    inner join 
     ojdt t2 on t1.transid = t2.transid 
    inner join 
     oinv t3 on t3.docnum = t2.BaseRef and t1.IsCredit = 'D' 
    inner join 
     oslp t6 on t3.slpcode = t6.SlpCode 
    where 
     t1.ReconNum = '819272' 

    union all 

    select 
     t4.docnum as 'Receipt', null as 'Invoice', 
     'slpname', t5.checksum 'Sum', t5.DueDate 'Duedate' 
    from 
     oitr t0 
    inner join 
     ITR1 t1 on t0.ReconNum = t1.ReconNum 
    inner join 
     ojdt t2 on t1.transid = t2.transid 
    inner join 
     orct t4 on t4.docnum = t2.BaseRef and t1.IsCredit = 'C' 
    inner join 
     rct1 t5 on t5.docnum = t4.DocNum 
    where 
     t1.ReconNum = '819272') tt 

enter image description here

enter image description here

+0

どうしたの?さて、あなたは私たちに言います。エラーが発生していますか?もしそうなら、どのエラーメッセージ?あるいは、あなたが望む行を手に入れていないのですか?もしそうなら、彼らはあなたが期待しているものとどう違うのですか? –

+0

これはどのRDBMSですか? MySQL、PostgreSQL、Oracle、SQL Server、IBM DB2などを使用しているかどうかにかかわらず、多くの場合違いがあります。あなたの質問に関連タグを追加してください! –

答えて

0

isnull(t6.SlpName,t6.SlpName) であなたの下のクエリで'slpname'を交換し、追加をありがとうinner JOIN oslp t6 on t3.slpcode = t6.SlpCode

+0

それは働いていない、下の選択に参加するテーブルはありません、slpnameは上の選択でのみ利用可能です –

+0

あなたは正しいです、** oinv t3の不在に気付かなかった** t4にはSPLNAME?それができない場合は、他のクエリからSPLNAMEを推測するクエリを作成することができません。それがいつも同じであることが分かっているなら、Splnameとしてこの 'MySplname'のようにしてみてください – Lobo