Click here to Skip to main content
15,887,746 members
Please Sign up or sign in to vote.
5.00/5 (1 vote)
See more:
Hi,

the SQL,
SQL
SELECT CONVERT(VARCHAR(10), TI_UTCTIME, 121)as [TRAVEL_DATE],
MIN(SUBSTRING(CONVERT(VARCHAR(23), TI_UTCTIME, 121), 1,16)) AS [START_TIME],
MAX(SUBSTRING(CONVERT(VARCHAR(23), TI_UTCTIME, 121), 1,16)) AS [STOP_TIME],
SD_STUDENTID as [STUDENT_ID],SD_STUDENTNAME as [STUDENT_NAME],
TI_DEVICEID as [DEVICE_ID]

FROM
 
(SELECT TI_UTCTIME,TI_DEVICEID,	TI_DATA
 FROM STS_TRAVELING_INFORMATION) AS T1
 
 JOIN
 
(SELECT SD_STUDENTID,SD_STUDENTNAME
 FROM STS_STUDENT_DETAILS_ WHERE SD_STUDENTNAME='Haseeb'
 AND SD_STUDENTCLASS='12') AS T2
 
 ON T1.TI_DATA LIKE '%'+T2.SD_STUDENTID
 WHERE TI_UTCTIME BETWEEN '2012-07-02' AND '2012-10-01'  
 GROUP BY CONVERT(VARCHAR(10), TI_UTCTIME, 121),TI_DEVICEID,SD_STUDENTID,SD_STUDENTNAME


retrieve the TABLE as below,

DATE        START_TIME           STOP_TIME        STUDENT_ID STUDENT_NAME DEVICE_ID
----        ----------           ---------        ---------- ---------    -------
2012-07-02 2012-07-02 11:07	2012-07-02 15:52   DT906	Haseeb	ST0001
2012-07-06 2012-07-06 18:45	2012-07-06 18:48   DT906	Haseeb	ST0001
2012-09-04 2012-09-04 12:35	2012-09-04 17:42   DT906	Haseeb	ST0001


the SQL,

SQL
SELECT DATE,VRS_DEVICEID,LOCATION,TRAVEL_DATE FROM
(
    SELECT Row_number() over (
        PARTITION BY  SUBSTRING(CONVERT(VARCHAR(23), VRS_UTCTIME, 121),1,16)
        order by CONVERT(VARCHAR(10), VRS_UTCTIME, 121),VRS_DEVICEID,'('+VRS_LATITUDE+', '+VRS_LONGITUDE+')'
        ) as rowno,CONVERT(VARCHAR(10), VRS_UTCTIME, 121)as [TRAVEL_DATE],
         VRS_DEVICEID,'('+VRS_LATITUDE+', '+VRS_LONGITUDE+')' AS LOCATION,
    SUBSTRING(CONVERT(VARCHAR(23), VRS_UTCTIME, 121),1,16) AS DATE
    FROM STS_VEHICLE_RUNNING_STATUS
)AS T1
where rowno = 1


retrieve the TABLE as below,

 DATE                VRS_DEVICEID   LOCATION     TRAVEL DATE

2012-07-02 11:07       ST001        TVM           2012-07-02

2012-07-02 11:02       ST001        KANIYAPURAM    2012-07-02

2012-07-02 15:52       ST001        KOLLAM         2012-07-02

2012-07-06 18:45       ST001        KOTTAKKAL      2012-07-06

2012-07-06 18:45       ST001        CHANKUVETTI    2012-07-06

2012-07-06 18:48       ST001        MANNARKKAD     2012-07-06

2012-09-04 12:35       ST001        KERALA         2012-09-04


2012-09-04 14:42       ST001        MAVOOR         2012-09-04

2012-09-04 17:42       ST001        KOVALAM        2012-09-04

Then ,i want to combine above two table as below,

 DATE        START_TIME        STOP_TIME       STUDENT_ID  STUDENT_NAME DEVICE_ID ENTRY_LOC  EXIT_LOC
------      ------------       ---------       ---------   -----------  --------  ---------  --------
2012-07-02  2012-07-02 11:07  2012-07-02 15:53  DT906	    Haseeb	 ST0001    TVM       KOLLAM
2012-07-06  2012-07-06 18:45  2012-07-06 18:48  DT906	    Haseeb	 ST0001    KOTTAKKAL MANNARKKAD
2012-09-04  2012-09-04 12:35  2012-09-04 17:42  DT906	    Haseeb	 ST0001    KERALA    KOVALAM


That is,

compare the START_TIME column in first table with DATE column in 2nd table, then
retrieve the corresponding LOCATION value it add to 1st table as
ENRTY_LOC column.

compare the STOP_TIME column in first table with DATE column in 2nd table, then
retrieve the corresponding LOCATION value it add to 1st table as
EXIT_LOC column

Thanks..
Posted
v5

1 solution

easy:

SQL
SELECT DATE,VRS_DEVICEID,LOCATION,TRAVEL_DATE into #tempDevice FROM
(
    SELECT Row_number() over (
        PARTITION BY  SUBSTRING(CONVERT(VARCHAR(23), VRS_UTCTIME, 121),1,16)
        order by CONVERT(VARCHAR(10), VRS_UTCTIME, 121),VRS_DEVICEID,'('+VRS_LATITUDE+', '+VRS_LONGITUDE+')'
        ) as rowno,CONVERT(VARCHAR(10), VRS_UTCTIME, 121)as [TRAVEL_DATE],
         VRS_DEVICEID,'('+VRS_LATITUDE+', '+VRS_LONGITUDE+')' AS LOCATION,
    SUBSTRING(CONVERT(VARCHAR(23), VRS_UTCTIME, 121),1,16) AS DATE
    FROM STS_VEHICLE_RUNNING_STATUS
)AS T1
where rowno = 1
 
SELECT CONVERT(VARCHAR(10), TI_UTCTIME, 121)as [TRAVEL_DATE],
MIN(SUBSTRING(CONVERT(VARCHAR(23), TI_UTCTIME, 121), 1,16)) AS [START_TIME],
MAX(SUBSTRING(CONVERT(VARCHAR(23), TI_UTCTIME, 121), 1,16)) AS [STOP_TIME],
SD_STUDENTID as [STUDENT_ID],SD_STUDENTNAME as [STUDENT_NAME],
TI_DEVICEID as [DEVICE_ID]
into #tempStudentDevice
FROM
 
(SELECT TI_UTCTIME,TI_DEVICEID,	TI_DATA
 FROM STS_TRAVELING_INFORMATION) AS T1
 
 JOIN
 
(SELECT SD_STUDENTID,SD_STUDENTNAME
 FROM STS_STUDENT_DETAILS_ WHERE SD_STUDENTNAME='Haseeb'
 AND SD_STUDENTCLASS='12') AS T2
 
 ON T1.TI_DATA LIKE '%<'+T2.SD_STUDENTID
 WHERE TI_UTCTIME BETWEEN '2012-07-02' AND '2012-10-01'  
 GROUP BY CONVERT(VARCHAR(10), TI_UTCTIME, 121),TI_DEVICEID,SD_STUDENTID,SD_STUDENTNAME
 
select  sd.DATE,sd.START_TIME,sd.STOP_TIME,sd.STUDENT_ID,sd.STUDENT_NAME,
        sd.DEVICE_ID, 
		(
			SELECT x.Location From #tempDevice as x
			Where x.vrs_DEVICEID = sd.Device_ID
			AND		sd.[START_TIME] = x.Date
		)as ENTRY_LOC, 
		
		(
			SELECT x.Location From #tempDevice as x
			Where x.vrs_DEVICEID = sd.Device_ID
			AND		sd.[STOP_TIME] = x.Date 
		)
		as EXIT_LOC
from #tempstudentDevice as sd
JOIN #tempDevice as d on d.VRS_DEVICEID = sd.DEVICE_ID
  
 
drop table #tempDevice, #tempstudentDevice
 
Share this answer
 
v3

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