2016-09-09 4 views
0

kann ich dies:wählen Zeilen, in denen Zeile unter gleichen Daten

row name  company   cusaddr_1 
1 Bob  Happy Valley 1 RIVER PARKWAY 
2    Happy Valley 1 RIVER PARKWAY 
3 Lorie  Pet supply  1 Falls Rd 
4 Greg  Pet supply  1 Falls Rd 
5    Pet supply  1 Falls Rd 
6    A Best Auto  1 camp dr 
7 Ron  1 Broadway Ave 

, was ich will Zeilen zurückgeben 1,3,4,6,7 ist. Grundsätzlich, wie kann ich Zeilen auswählen, wo das Unternehmen einen Namen hat und ein Duplikat ist, aber die Zeilen immer noch wie Zeile 6 behalten, wo es nur eine Option für Firma und keinen Namen gibt? Dies ist Access-2013 und ich erstellt die Tabelle, die eine Union-Abfrage wie dies zu tun:

select DISTINCT blName as name, company, cusaddr_1 
from one_table 
union all 
select DISTINCT shName as name, company, cusaddr_1 
from one_table 
+0

Wie fo Was wäre zum Beispiel, wenn Zeile 2 den Namen Bob hätte? – Rene

+0

Dann würde ich nur einen von ihnen sehen wollen –

Antwort

0

ich eine Abfrage mit einer WHERE-Klausel erstellen würde überprüfen, ob Zeilen mit einem leeren Namen für das Unternehmen darin ein weiteren Datensatz mit einem Namen haben und ohne den Datensatz, wenn es tut:

WHERE (name is NOT NULL) or 
((name IS NULL) AND (company IN 
    (SELECT company FROM one_table GROUP BY company HAVING MAX(name) IS NULL))) 

wenn Sie nur auf eine Zeile für Unternehmen zurück, die nur leere Namen haben, dann würde ich die WHERE-Klausel gegen die Zeilennummer erstellen:

WHERE (name is NOT NULL) or 
((name IS NULL) AND (row In 
(SELECT Min(row) FROM one_table GROUP BY company HAVING MAX(name) Is Null))) 
+0

Meine Liste wird von einer Vereinigungsabfrage gebaut, wo 'Name' von den Vereinigungen gebaut wird (sehen Sie die Sql nach der Liste) Wie könnte ich Ihre Idee mit 'Name' aus erstellen die Gewerkschaftsfrage? –

+0

Sie könnten eine make-Tabellenabfrage aus der Vereinigungsabfrage verwenden und dann die WHERE-Klausel in eine Abfrage für diese Tabelle einfügen. Wenn Sie dies nicht tun möchten, können Sie die UNION-Abfrage im Tabellennamen wie folgt ersetzen: SELECT * FROM ([union query here]) TABLE1 WHERE ... müssten Sie die selbe Ersetzung für one_table in der Unterabfrage auch. – JJ32

+0

Das hat funktioniert. Danke für die Hilfe. –

Verwandte Themen