2017-07-26 89 views
0

我有兩個表第一個是真正的表第二個是臨時的。我不得不比較這兩張表。第一張桌上的'KartelaKod'字段應該與temp的'KartelaKodu'字段匹配,First的'OzellikKod'字段應該與temp的'OzellikKodu'匹配,第一個'AltKod'字段應該與temp的'StokKodu'匹配。 Tables在sql server中比較多行和列

最後,如果它不完全匹配,它應該返回''。

PS:您應該根據VrtUrunKod將第一個表分組。 例如,如果MAM | 002(它是VrtUrunKod)OzellikKod字段與臨時表的OzellikKodu字段不匹配,它應該查找另一個VrtUrunKod記錄。

編輯1:isnull((Select TOP 1 VrtUrunKod From KonfigOlusmusOzellikler k Where Sirket_Kod = @sp_Sirket_Kod and AnaUrunKod = @spStokKod and exists(Select * From #TempDegisen t Where t.KartelaKodu = k.KartelaKodu and t.OzellikKodu = k.OzellikKod and t.StokKodu = k.AltKod)),'')這是我到目前爲止所寫的,你可以忽略Sirket_Kod字段和參數。

+0

您可以發佈到目前爲止寫的SQL嗎? –

+0

我添加了我的查詢。但當然這是錯的,這只是回報我只有一排比較。 –

+0

開始誤解你的問題,我想..你想要一個描述兩個表是否匹配的單行結果,還是你想要一個不匹配的所有行的列表? –

回答

0

這應該產生一個行的列表,其中有一個k沒有匹配的t,並且沒有匹配的k。如果沒有行結果,所有行匹配:

SELECT * 

FROM 
    KonfigOlusmusOzellikler k 
    FULL OUTER JOIN 
    #TempDegisen t 
    ON 
    t.KartelaKodu = k.KartelaKodu and 
    t.OzellikKodu = k.OzellikKod and 
    t.StokKodu = k.AltKod 

WHERE t.KartelaKodu IS NULL OR k.KartelaKodu IS NULL