2017-04-15 14 views
1

Ich habe eine Tabelle, die 3 Spalten ID, Besuchsdatum und Termindatum hat. Ich möchte eine SQL-Abfrage schreiben, um die folgenden zu finden Für jede ID, wie viele Einträge gibt es dort, wo Besuchsdatum mit dem Termin übereinstimmt. Bitte beachten Sie, dass der Vergleich für jede ID über mehrere Zeilen hinweg erfolgen muss. Beispiel:SQL-Abfrage zum Vergleich von 2 Spalten

id Visit-date Appointment-date 
1  20-1-2016 20-2-2016 
1  20-2-2016 30-3-2016 
1  04-04-2016 05-05-2016 

und so weiter

Vielen Dank für die Hilfe. Prasad

+0

Was meinst du mit "über mehrere Zeilen"? –

+0

Um klarer zu sein, muss die Abfrage für jedes Termindatum innerhalb einer ID melden, ob es übereinstimmende Besuchsdaten gibt oder nicht. Im obigen Beispiel ist die passende Kombination Termin für Verabredung: 20-2-2016 und Besuchsdatum: 20-2-2016. – prasad

Antwort

0

Sie einen LEFT JOIN mit Aggregation verwenden, um die gewünschten Ergebnisse zu erhalten:

select a.id, 
    count(b.appointment_date) as count 
from your_table a 
left join your_table b on a.id = b.id 
    and a.visit_date = b.appointment_date 
group by a.id; 
0

Sie Datensätze Gruppierung von id zählen kann.

select id, count(*) num_records 
from  your_table 
where  visit_date = appointment_date 
group by id 
Verwandte Themen