在sql server中比较多行和列

问题描述:

我有两个表第一个是真正的表第二个是临时的。我不得不比较这两张表。第一张桌上的'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

开始误解你的问题,我想..你想要一个描述两个表是否匹配的单行结果,还是你想要一个不匹配的所有行的列表? –

这应该产生一个行的列表,其中有一个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