2017-03-31 2 views
0

Ich habe eine Aufzeichnung eines Mitarbeiters, aber meine Abfrage gibt 2 Datensätze dieses Mitarbeiters zurück, weil die Spalte Adresse unterscheidet sich zwischen den 2. Wie kann das lösen Problem? Ist es etwas, das getan werden kann? EMP_ID, CUS_LAST_NAME, CUS_FIRST_NAME und GUARDIAN_ADDRESS stammen aus 3 separaten Tabellen.Frage zurückgebende Datensätze mit doppelten Daten wegen der falschen Daten in einer der Spalten

Beispiel:

ID   EMP_ID  CUS_LAST_NAME CUS_FIRST_NAME GUARDIAN_ADDRESS 
00000000 11111111 Jackson   Michael   1111 Street Apt 1 

ID   EMP_ID  CUS_LAST_NAME CUS_FIRST_NAME GUARDIAN_ADDRESS 
00000000 11111111 Jackson   Michael   1111 Street   
+0

Welche der Adressen möchten Sie sehen? Zuerst? Neueste? Strom? –

+2

Wie erwarten Sie, dieses Problem zu lösen? Zeigen Sie uns das Datenbankschema, die Beispieldaten und die erwartete Ausgabe. \t Bitte lesen Sie [** How-to-Ask **] (http://stackoverflow.com/help/how-to-ask) \t \t Und hier ist ein großartiger Ort, um [** START **] (http://spaghettiba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/) um zu erfahren, wie Sie die Qualität Ihrer Fragen verbessern und bessere Antworten erhalten. –

+0

Wie haben Sie unterschiedliche Mitarbeiterdatensätze mit derselben EMP_ID? Wird die Adresse getrennt von Employee gespeichert? – Jerrad

Antwort

0

Die schnelle und schmutzige Art und Weise mit max():

select id, emp_id, emp_last_name, emp_first_name, max(address) as address 
from employees 
group by id, emp_id, emp_last_name, emp_first_name 

Alternative mit: top with ties

select top 1 with ties 
    id, emp_id, emp_last_name, emp_first_name, address 
from employees 
order by row_number() over (partition by emp_id order by address desc) 

rextester Demo für beide: http://rextester.com/EGGA75008

+0

zeigt immer noch Duplikate. Beide Adressen zeigten sich. – EkansDasnakE

+0

@EkansDasnakE Rextester-Demo: http://rextester.com/EGGA75008 – SqlZim

0

wenn Sie die nicht einer der beiden löschen, wenn Sie keine Rolle, welche die Auswahlrücksendeadresse können Sie eine Aggregationsfunktion verwenden, um nur eine Zeile bekommen

select ID , EMP_ID , EMP_LAST_NAME, EMP_FIRST_NAME, min(ADDRESS) 
from my_table 
group by ID , EMP_ID , EMP_LAST_NAME, EMP_FIRST_NAME 
+0

Immer noch Duplikate. Beide Adressen zeigten sich. – EkansDasnakE

+0

unmöglich ... überprüfen Sie für Sie Abfrage oder Sie Daten .. zeigen Sie die genaue Abfrage, die Sie verwenden und eine ordnungsgemäße Daten Beispiel .. – scaisEdge

+0

Sorry, ich habe die Frage bearbeitet. – EkansDasnakE

0

Wenn Sie ermitteln möchten, welche Mitarbeiter haben dupliziert Einträge.

SELECT * 
FROM employees 
WHERE EMP_ID IN (
    SELECT EMP_ID 
    FROM employees 
    GROUP BY EMP_ID 
    HAVING COUNT(*) > 1 
    ) 
0
--start with unique list of clients 
    SELECT DISTINCT a.ID, a.EMP_ID, e.EMP_LAST_NAME, e.EMP_FIRST_NAME,  e.ADDRESS 
FROM TABLE1 a 
--attach on employee data on id 
    OUTER APPLY (SELECT TOP 1 b.EMP_LAST_NAME, b.EMP_FIRST_NAME, b.ADDRESS 
    FROM TABLE2 b 
    WHERE a.id = b.id 
--use order by clause to change order and choose what top employee record u  want to choose 
    ORDER BY b.address 
    ) e 
Verwandte Themen