2016-04-04 12 views
0

Ich habe eine Tabelle, die sowohl Firmenname und Kontakte für ihre jeweiligen Unternehmen hat. Die Spalte "Typ" hat eine 0 oder 1, die angibt, ob es sich um eine Firma oder eine Person handelt. Jede Zeile hat eine Spalte mit einer eindeutigen Kontaktnummer. Die Zeile "Person" hat eine Spalte namens "Company no." das verbindet die Person mit der Firma. Ich versuche Zeilen zurückzugeben, die eine Firma ohne Kontakte in derselben Tabelle anzeigen. Ich bin mir nicht sicher, wie ich diese Abfrage überhaupt schreiben soll.Vergleichen von Daten in der gleichen Tabelle für nicht vorhandene Zeilen

+0

Sie wirklich Ihren Tisch Design ändern sollte! Mischen Sie niemals unterschiedliche Daten in einer Tabelle! – Shnugo

+0

Es ist out-of-the-box-Microsoft-Tabelle ... nicht mein Design ... –

+0

Wenn Sie an dieser Tabelle bleiben müssen, kann es natürlich getan werden ... Bitte geben Sie die Tabelle Struktur und Beispieldaten und erwartete Ausgabe. Was hast du bisher versucht? – Shnugo

Antwort

1

Probieren Sie es wie folgt aus:

DECLARE @tbl TABLE(ContactNo INT, Name VARCHAR(100), [Type] INT,CompanyNo INT); 
INSERT INTO @tbl VALUES 
(100,'ACME, Inc.',0,100) 
,(200,'Bob Smith',1,100) 
,(300,'John Doe',1,100) 
,(400,'Widget World',0,400) 
,(500,'Fishing, Inc.',0,500) 
,(600,'Jane Doe',1,500); 

WITH TheCompanies AS 
(
    SELECT * 
    FROM @tbl AS tbl 
    WHERE tbl.[Type]=0 
) 
SELECT * 
FROM TheCompanies 
WHERE NOT EXISTS(SELECT 1 FROM @tbl WHERE [Type]=1 AND CompanyNo=TheCompanies.CompanyNo); 
+0

Vielen Dank, war nicht meine Absicht zu nerven, nur zu lernen . Diejenigen, die können, tun. Diejenigen, die nicht können, lehren. Du hast mir heute gelehrt. –

+0

@CraigZirnheld Egal, fröhliche Programmierung :-) – Shnugo