sql server - Query to join multiple columns from one table -


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