2017-06-29 1 views
-1

Ich habe eine Instanz, wo ich die Anzahl der verschiedenen Tage zwischen den Datensätzen, wo die Daten überlappen müssen, berechnen muss. Unten ist ein Beispiel:Distinct Datumsangaben zwischen Datensätzen, die Tage überlappen

    Start Date   End Date 
Record 1   5/1/2017   6/15/2017 
Record 2   5/15/2017   6/30/2017 

Grundsätzlich ist von 01.05/rechnen muß - 6/30, aber nur 5/15 rechnen müssen - 6/15 einmal. Und ich könnte mehr als zwei Platten haben. Versucht, eine Kalendertabelle zu verwenden, konnte den Code jedoch nicht richtig erhalten.

+1

Haben Sie eine Kalendertabelle in der Datenbank? –

+0

@ SGibbs-Sie benötigen die Anzahl der Datensätze, die sich überlappen? –

+0

Ich muss die unterschiedlichen Daten zählen, wenn die Datensätze sich überschneiden. Ich benutze T-SQL – SGibbs

Antwort

0

Mit einem Kalender Tabelle:

select count(distinct c.date) 
from calendartable c 
join tablename t on c.date between t.startdate and t.enddate 
0

mit MySQL, aber nicht einen Kalender Tisch mit ...

DROP TABLE IF EXISTS my_table; 

CREATE TABLE my_table 
(id INT AUTO_INCREMENT PRIMARY KEY 
,start_date DATE NOT NULL 
,end_date DATE NOT NULL 
); 

INSERT INTO my_table VALUES 
(1,'2017-05-01','2017-06-15'), 
(2,'2017-05-15','2017-06-30'); 

SELECT DATEDIFF(LEAST(x.end_date,y.end_date),GREATEST(x.start_date,y.start_date)) diff 
    FROM my_table x 
    JOIN my_table y 
    ON y.end_date > x.start_date 
    AND y.start_date < x.end_date 
    AND y.id < x.id; 
+------+ 
| diff | 
+------+ 
| 31 | 
+------+ 

oder so ähnlich.

Verwandte Themen