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
A
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
Sie wirklich Ihren Tisch Design ändern sollte! Mischen Sie niemals unterschiedliche Daten in einer Tabelle! – Shnugo
Es ist out-of-the-box-Microsoft-Tabelle ... nicht mein Design ... –
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