Click here to Skip to main content
15,887,683 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
my project is to display the sensor status in grid,each sensor state has 3 states 1)OFF 2) LOAD 3)IDLE. This conditions is purely based on voltages so if a sensor generated 10 reports for LOAD and the 11th report is OFF so i need to display only 1st report of LOAD and 1st report of OFF in grid.so i need sql query for this task.

thank you in advance
Posted
Comments
Amir Mahfoozi 12-Dec-11 1:33am    
Please provide sample raw data and expected output.
kalyan10qwerty 12-Dec-11 2:08am    
PLEASE GIVE YOUR MAIL ID,I WILL SEND U THE FILE
Amir Mahfoozi 12-Dec-11 2:15am    
No, only provide for example 10 rows of data and expected output. I didn't mean a huge amount of data.
kalyan10qwerty 12-Dec-11 2:27am    
OK...

AUTOID IMEINO DEVICEID TMIE STAMP S-1 S-2 S-3 S-4 S-5

1 2 DEV_001 1/1/2011 11:03:36 AM IDLE LOAD LOAD LOAD LOAD
2 4 DEV_002 1/1/2011 8:03:36 AM IDLE LOAD LOAD LOAD LOAD
3 6 DEV_003 1/1/2011 1:00:36 PM IDLE LOAD LOAD LOAD LOAD
4 8 DEV_004 1/1/2011 11:03:36 AM IDLE LOAD LOAD LOAD LOAD
5 10 DEV_005 1/1/2011 11:03:36 AM IDLE LOAD LOAD LOAD LOAD
6 2 DEV_001 1/1/2011 11:05:38 AM IDLE LOAD LOAD LOAD LOAD
7 4 DEV_002 1/1/2011 8:05:38 AM IDLE LOAD LOAD LOAD LOAD
8 6 DEV_003 1/1/2011 1:02:38 PM LOAD LOAD LOAD LOAD LOAD
9 8 DEV_004 1/3/2011 11:03:38 AM LOAD LOAD LOAD LOAD LOAD
10 10 DEV_005 1/3/2011 11:03:38 AM LOAD LOAD LOAD LOAD LOAD
11 2 DEV_001 1/3/2011 11:07:38 AM LOAD LOAD LOAD LOAD LOAD
12 4 DEV_002 1/3/2011 8:07:38 AM LOAD LOAD LOAD LOAD LOAD
13 6 DEV_003 1/3/2011 1:04:38 PM LOAD LOAD LOAD LOAD LOAD
14 8 DEV_004 1/3/2011 11:03:38 AM LOAD LOAD LOAD LOAD LOAD
15 10 DEV_005 1/3/2011 11:03:38 AM LOAD LOAD LOAD LOAD LOAD
16 2 DEV_001 2/3/2011 11:09:38 AM LOAD LOAD LOAD LOAD LOAD
17 4 DEV_002 2/3/2011 8:09:38 AM OFF LOAD LOAD LOAD LOAD
18 6 DEV_003 2/3/2011 1:06:38 PM OFF LOAD LOAD LOAD LOAD
19 8 DEV_004 2/3/2011 11:03:38 AM OFF LOAD LOAD LOAD LOAD
20 10 DEV_005 2/3/2011 11:03:38 AM OFF LOAD LOAD LOAD LOAD
21 2 DEV_001 2/2/2011 11:11:40 AM OFF LOAD LOAD LOAD LOAD
22 4 DEV_002 2/2/2011 8:11:40 AM LOAD LOAD LOAD LOAD LOAD
23 6 DEV_003 2/2/2011 1:08:40 PM LOAD LOAD LOAD LOAD LOAD
24 8 DEV_004 2/2/2011 11:03:40 AM LOAD LOAD LOAD LOAD LOAD
25 10 DEV_005 2/2/2011 11:03:40 AM LOAD LOAD LOAD LOAD LOAD
kalyan10qwerty 12-Dec-11 2:33am    
I D ABOVE RAW DATA S-1 IS IDLE FROM 3:36 TO 8:5 and it changed its status to load at 1:2pm so i want to display only 3:36 report of s-1 with respect to time and 1:2pm of s-1 report with respect to time.i don't want in between records.for this i need query

1 solution

This query will show you the first event for each sensor per device. It will output data so that you can do whatever you want with it.

SQL
IF OBJECT_ID(N'tempdb..#s1') IS NOT NULL
  drop table #s1

select ROW_NUMBER() over (partition by '1' order by imeino, sensor ,timestamp) rid, *  into #s1 from
(
select autoid, imeino , deviceid , timestamp, 's-1' sensor, [s-1] status   from sensordata
union
select autoid, imeino , deviceid , timestamp, 's-2' sensor, [s-2] status   from sensordata
union
select autoid, imeino , deviceid , timestamp, 's-3' sensor, [s-3] status   from sensordata
union
select autoid, imeino , deviceid , timestamp, 's-4' sensor, [s-4] status   from sensordata
) as flatted
 where not imeino is null

;with a(rid, autoid, imeino, deviceid, timestamp, sensor, status, r) as
(
select * , RANK() over (partition by imeino, sensor, status order by rid) r from #s1
)
select * from a
where r = 1


I assumed that your table name is sensordata so change it to whatever it is.

If you can't convert it to stored procedure so you do not deserve to get a good score...

Hope it helps.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900