i trying compare values of 3 different pieces of data same table. table getting information contains columns descriptionid, datetime, , data. want compare values of data different descriptionids when datetime + or - 1 minute of eachother. used join 2 description ids follows:
select a.descriptionid, b.descriptionid, a.data, a.datetime 'dataa',b.data 'datab' from( select top 1000 [descriptionid] ,[machineid] ,[datetime] ,[data] [acqdata].[dbo].[alarmdata] descriptionid =1014 order datetime desc ) inner join ( select top 1000 [descriptionid] ,[machineid] ,[datetime] ,[data] [acqdata].[dbo].[alarmdata] descriptionid=1914 order datetime desc ) b on a.datetime between (dateadd(minute, -1, b.datetime)) , (dateadd(minute, 1, b.datetime)) b.data='true'or b.data = 'false' i thought might able join joined made above, , select query again. however, did not seem work.
i pretty new sql if going in totally wrong direction let me know.
changed to:
with mydata1014 ( select top 1000 [descriptionid] ,[machineid] ,[datetime] ,[data] [acqdata].[dbo].[alarmdata] descriptionid =1014 order datetime desc ) ,mydata1914 ( select top 1000 [descriptionid] ,[machineid] ,[datetime] ,[data] ,dateadd(minute,1,[datetime]) datplus1 ,dateadd(minute,-1,[datetime]) datminus1 [acqdata].[dbo].[alarmdata] descriptionid =1914 order datetime desc ) ,mydata1005 ( select top 1000 [descriptionid] ,[machineid] ,[datetime] ,[data] ,dateadd(minute,1,[datetime]) datplus1 ,dateadd(minute,-1,[datetime]) datminus1 [acqdata].[dbo].[alarmdata] descriptionid =1005 order datetime desc ) select * mydata1014 outer apply ( select data mydata1914 mydata1014.[datetime] between mydata1914.datminus1 , mydata1914.datplus1 ) details1914 details1914.data='true' or details1914.data='false' now how use mydata 1005?
using reserved words column names ("datetime") not idea...
but - anyway - help:
i use ctes handle subsets if selfstanding tables. untested , - - cannot quite image want... :-)
with mydata1014 ( select top 1000 [descriptionid] ,[machineid] ,[datetime] ,[data] [acqdata].[dbo].[alarmdata] descriptionid =1014 order datetime desc ) ,mydata1914 ( select top 1000 [descriptionid] ,[machineid] ,[datetime] ,[data] ,dateadd(minute,1,[datetime]) datplus1 ,dateadd(minute,-1,[datetime]) datminus1 [acqdata].[dbo].[alarmdata] descriptionid =1914 order datetime desc ) ,mydata1005 ( select top 1000 [descriptionid] ,[machineid] ,[datetime] ,[data] ,dateadd(minute,1,[datetime]) datplus1 ,dateadd(minute,-1,[datetime]) datminus1 [acqdata].[dbo].[alarmdata] descriptionid =1005 order datetime desc ) select * mydata1014 outer apply ( select data mydata1914 mydata1014.[datetime] between mydata1914.datminus1 , mydata1914.datplus1 ) details1914 outer apply ( select data mydata1005 mydata1014.[datetime] between mydata1005.datminus1 , mydata1005.datplus1 ) details1005 details1914.data='true' or details1914.data='false' --true or false true ???
Comments
Post a Comment