Ho un grande insieme di dati che per la fine di questa domanda ha 3 campi:Periodi Condensare di tempo con SQL
- Group Identifier
- Da Data
- di sesso
On qualsiasi riga data il From Date
sarà sempre inferiore allo To Date
ma all'interno di ciascun gruppo i periodi di tempo (che non sono in ordine particolare) rappresentati dalle coppie di date potrebbero sovrapporsi, essere contenuti in e all'interno di un altro, o addirittura essere identici.
Quello che mi piacerebbe finire è una query che condensa i risultati per ciascun gruppo fino ai periodi continui. Per esempio un gruppo che assomiglia a questo:
| Group ID | From Date | To Date |
--------------------------------------
| A | 01/01/2012 | 12/31/2012 |
| A | 12/01/2013 | 11/30/2014 |
| A | 01/01/2015 | 12/31/2015 |
| A | 01/01/2015 | 12/31/2015 |
| A | 02/01/2015 | 03/31/2015 |
| A | 01/01/2013 | 12/31/2013 |
si tradurrebbe in questo:
| Group ID | From Date | To Date |
--------------------------------------
| A | 01/01/2012 | 11/30/2014 |
| A | 01/01/2015 | 12/31/2015 |
Ho letto un certo numero di articoli sulla data di confezionamento, ma non riesco a capire come applicare quello al mio set di dati.
Come si può costruire una query che mi darebbe quei risultati?
Quale versione di SQL Server stai usando? –
@GiorgosBetsos 2012 – matthew
Perché reinventare la ruota? Itzik Ben-Gan ha scritto più articoli sugli intervalli di imballaggio, ad es. http://blogs.solidq.com/en/sqlserver/packing-intervals/ – dnoeth