2017-06-20 2 views
-1

I ont une base de données (SQL 2014) qui contient les entrées suivantes:blocs Résumant de dates contiguës en début et dates de fin

Name Date 
John 02/02/2017 
John 03/02/2017 
John 04/02/2017 
John 13/03/2017 
John 14/03/2017 

Ces entrées représentent des blocs d'absences du travail - il pourrait être un jour chaque temps, ou des blocs de plusieurs jours (avec des transitions mois possibles dans un bloc).

Je voudrais résumer ces données comme suit:

où la sortie
Name MinDate  MaxDate 
John 02/02/2017 04/02/2017 
John 13/03/2017 14/03/2017 

contient le premier et le dernier jour de chaque bloc (en même temps que le nombre de jours d'absence, qui sera simple).

+5

Votre logique est pas claire. En outre, marquer avec la base de données que vous utilisez. –

+2

Veuillez clarifier la logique. S'agit-il d'une rangée par bloc de dates contiguës (02-04 février, 13-14 mars)? Ou est-ce min/max par mois? Pourrait-il y avoir plus d'un tel blocage par mois? –

+1

Aussi, il est considéré comme agréable de montrer ce que vous avez essayé –

Répondre

1

Utilisez YEAR et MONTH

SELECT 
    T.Name, 
    MIN(T.Date) MinDate, 
    MAX(T.Date) MaxDate 
FROM 
    Tbl T 
GROUP BY 
    T.Name, 
    YEAR(T.Date), 
    MONTH(T.Date)