2016-07-14 1 views
-1

Ich habe eine SRC-Tabelle und STG-Tabelle und beide Tabellen haben ein gemeinsames Feld namens BU. Ich habe die folgende Abfrage schriftlichen Aufzeichnungen von SRC Tabelle zu zählen, wo BU und MU in beiden Tabellen Spiel nicht:Abfrage, um Datensätze zu zählen, die sich von 2 Tabellen unterscheiden

select COUNT (*) from [dbo].[SRC] 
    where (select Name from [dbo].[SRC] t1, [dbo].[STG] t2 
    where t1.BU <> t2.BU and t1.MU <> t2.MU) 
+3

vergaßen Sie die Frage? –

Antwort

0

Sehen Sie können mit LEFT JOIN und NICHT IN Funktion, um die Ausgabe zu erhalten.

SELECT COUNT (*) FROM [dbo].[SRC] s 
    WHERE s.BU NOT IN (SELECT BU FROM dbo.STG); 
0

Verwenden Sie ein left join

select COUNT (*) 
from [dbo].[SRC] t1 
left join [dbo].[STG] t2 on t1.BU = t2.BU 
where t2.BU is null 

this great explanation of joins

0

Ich glaube, Sie suchen Matches durch ID zu finden, wo BU und MU nicht übereinstimmen. Du hast das nicht in Frage gestellt, also lese ich zwischen den Zeilen einiger deiner Kommentare. Ich vermute, du willst auch nur solche mit einer Zählung größer als Null sehen. Wenn eine der BU und MU Spalten null sein kann, dann müssen Sie mit denen, vorsichtig sein (zum Beispiel COALESCE(SRC.BU, '[email protected]#$%') <> COALESCE(STG.BU, '[email protected]#$%').)

select ID, count(STG.ID) as CountDissimilar 
from 
    dbo.SRC left outer join dbo.STG 
     on STG.ID = SRC.ID and STG.BU <> SRC.BU and SRC.MU <> SRC.MU 
group by SRC.ID 
having count(STG.ID) > 0 
Verwandte Themen