SQL查询选择两次之间的项,每30秒增加一次



我试图从两个日期之间的这些表中选择标签和其他属性,并最终从指定的日期范围中选择一分钟增量的标签,因为标签每隔几秒钟上传一次。目前,我的最后一个AND语句似乎没有从我想要的指定日期范围中选择我的标签。我正在调查这个问题,也看到了类似的帖子,但我被困在为什么1:我没有从下面的日期范围得到这些。2:如何在日期范围内以1分钟的增量选择标签…

SELECT TOP (1000) FloatTable.[DateAndTime]
,FloatTable.[Millitm]
,FloatTable.[TagIndex]
,FloatTable.[Val]
,FloatTable.[Status]
,FloatTable.[Marker]
,TagTable.[TagName]
,TagTable.[TagType]
,TagTable.[TagDataType]
FROM [FactoryTalk_Datalog].[dbo].[FloatTable] as FloatTable
JOIN [FactoryTalk_Datalog].[dbo].[TagTable] as TagTable
on FloatTable.[TagIndex] = TagTable.[TagIndex]
WHERE TagTable.[TagName] = '[PLC]FI225'
OR TagTable.[TagName] = '[PLC]FI250'
OR TagTable.[TagName] = '[PLC]FI220'
OR TagTable.[TagName] = '[PLC]AT_FI510'
OR TagTable.[TagName] = '[PLC]AT_AI500'
OR TagTable.[TagName] = '[PLC]SS_FIT1109'
AND FloatTable.[DateAndTime] BETWEEN '2022-04-01 23:53:00.000' AND '2022-04-01 23:58:00.000'

我已经尝试预先指定日期,然后工作的标签,但随后拉入所有标签,我需要选择几个标签。

我看过其他两个日期工作的堆栈帖子,但他们选择了所有而不是上面列出的一组特定项目。

您可以在抹布周围使用括号或使用IN子句问题的存在是因为AND优先于OR,参见https://learn.microsoft.com/en-us/sql/t-sql/language-elements/operator-precedence-transact-sql?view=sql-server-ver16

SELECT TOP (1000) FloatTable.[DateAndTime]
,FloatTable.[Millitm]
,FloatTable.[TagIndex]
,FloatTable.[Val]
,FloatTable.[Status]
,FloatTable.[Marker]
,TagTable.[TagName]
,TagTable.[TagType]
,TagTable.[TagDataType]
FROM [FactoryTalk_Datalog].[dbo].[FloatTable] as FloatTable
JOIN [FactoryTalk_Datalog].[dbo].[TagTable] as TagTable
on FloatTable.[TagIndex] = TagTable.[TagIndex]
WHERE (TagTable.[TagName] = '[PLC]FI225'
OR TagTable.[TagName] = '[PLC]FI250'
OR TagTable.[TagName] = '[PLC]FI220'
OR TagTable.[TagName] = '[PLC]AT_FI510'
OR TagTable.[TagName] = '[PLC]AT_AI500'
OR TagTable.[TagName] = '[PLC]SS_FIT1109')
AND FloatTable.[DateAndTime] BETWEEN '2022-04-01 23:53:00.000' AND '2022-04-01 23:58:00.000'

SELECT TOP (1000) FloatTable.[DateAndTime]
,FloatTable.[Millitm]
,FloatTable.[TagIndex]
,FloatTable.[Val]
,FloatTable.[Status]
,FloatTable.[Marker]
,TagTable.[TagName]
,TagTable.[TagType]
,TagTable.[TagDataType]
FROM [FactoryTalk_Datalog].[dbo].[FloatTable] as FloatTable
JOIN [FactoryTalk_Datalog].[dbo].[TagTable] as TagTable
on FloatTable.[TagIndex] = TagTable.[TagIndex]
WHERE TagTable.[TagName] IN( '[PLC]FI225','[PLC]FI250',
'[PLC]FI220', '[PLC]AT_FI510', '[PLC]AT_AI500', '[PLC]SS_FIT1109')
AND FloatTable.[DateAndTime] BETWEEN '2022-04-01 23:53:00.000' AND '2022-04-01 23:58:00.000'

最新更新