2010-08-23 5 views
2

J'ai une table avec ce schéma:Aide requête SQL

DeviceID int
RoomID int
datetime DateInstalled

Un échantillon des données de la table ressemble à:

DeviceID RoomID DateInstalled 
0001  Room1 1/1/2000 
0002  Room1 1/1/2000 
0001  Room2 2/1/2000 

I besoin de construire une requête qui me donnera la plage de dates de chaque appareil était situé sur une pièce spécifique. Quelque chose comme:

DeviceID RoomID From Date To Date 
0001  Room1 1/1/2000  1/31/2000 
0001  Room2 2/1/2000  NULL 
0002  Room1 1/1/2000  NULL 

Toute aide sera appréciée,

Merci.

+0

Avez-vous un contrôle sur la structure de la table? – AllenG

Répondre

1

Donnez ce un coup:

select a.DeviceID, a.RoomID, a.DateInstalled as fromDate, 
    ISNULL((select DATEADD(day,-1,MIN(DateInstalled)) from myTable 
      where DeviceID = a.DeviceID 
      and RoomID <> a.RoomID 
      and DateInstalled > a.DateInstalled),'') as toDate 
from myTable a 
+0

J'ai utilisé ceci en supprimant le ISNULL. Merci Fosco .. – Anon4this