J'ai une table qui contient mon statut de serveurSommation de Split plages dans une requête SQL
create table ServerStatus
(
ServerId int,
StartTime datetime,
Seconds int,
[State] char(8)
)
Je voudrais une requête qui donne un début et une date de fin résumera le temps le serveur passe dans chaque état pendant cette temps. Je voudrais également que la requête renvoie le temps passé par les serveurs dans un état inconnu.
Ainsi, par exemple pour les données suivantes
1 2008-01-01 00:00:00.000 120 broken
1 2008-01-02 00:00:00.000 120 off
1 2008-01-03 00:00:00.000 240 burning
1 2008-01-04 00:00:00.000 60 off
1 2008-01-05 00:00:00.000 60 off
2 2008-01-01 00:00:00.000 60 broken
2 2008-01-02 00:00:00.000 30 off
2 2008-01-03 00:00:00.000 20 burning
2 2008-01-04 00:00:00.000 600 off
3 2007-01-04 00:00:00.000 600 off
4 2007-12-12 00:00:00.000 999999999 onfire
fourni la gamme.
select @start = dateadd(second, 60, '2008-01-01'),
@fin = dateadd(second, 60, '2008-01-04')
Je voudrais retourner les résultats:
1 broken 60
1 burning 240
1 off 180
1 unknown 258720
2 burning 20
2 off 90
2 unknown 259090
4 onfire 259200
Cette question est un peu liée à: Combining split date ranges in a SQL query
Nous avons besoin de plus d'informations. Par exemple, StartTime est-il toujours exactement minuit? Y a-t-il des jours pour lesquels il existe plusieurs intervalles? –
Salut, reclassé pour fusionner les balises mssql dans sqlserver. – ConcernedOfTunbridgeWells