【发布时间】:2017-06-24 14:29:26
【问题描述】:
我是一名控制工程师,对 SQL 知之甚少,但使用 AB FactoryTalk、SQL Express 2012 和 Report Builder 3.0 进行了一些报告。数据来自 PLC 并将数据记录到三个表中
- 浮动表
- 字符串表
- 标签表
标签表包含标签名称和“TagIndex”以供参考。 Float 表包含所有数字数据,并有一个“TagIndex”,其数字与标签表中的标签名称相匹配。与字符串表相同的概念,保存字符串并具有与标记表中的标记名称匹配的“TagIndex”。
我正在构建一个表,该表显示整个数据日志快照,其中包括来自浮点表和字符串表的一些数据。两者相互关联,因为它们的日期/时间记录匹配。
我需要将 Tag 表与 String 表和 Float 表相关联,并在记录的日期之前将 String 表与 Float 表相关联。
使用报表生成器中的查询设计器,我有一个带有以下内容的半工作表
SELECT
StringTable.DateAndTime AS [StringTable DateAndTime]
,FloatTable.DateAndTime AS [FloatTable DateAndTime]
,FloatTable.TagIndex AS [FloatTable TagIndex]
,FloatTable.Val AS [FloatTable Val]
,StringTable.Val AS [StringTable Val]
,TagTable.TagIndex AS [TagTable TagIndex]
,TagTable.TagName
,TagTable.StartEnd
,TagTable.TableOrder
,TagTable.Label
,TagTable.Unit
,StringTable.TagIndex AS [StringTable TagIndex]
FROM TagTable
FULL OUTER JOIN FloatTable
ON TagTable.TagIndex = FloatTable.TagIndex
FULL OUTER JOIN StringTable
ON TagTable.TagIndex = StringTable.TagIndex
^Code 有效,但与 FloatTable 和 StringTable 没有关系。 还将最后两行替换为以下内容,这是一个有效的查询,但没有产生我需要的内容:
FULL OUTER JOIN StringTable
ON TagTable.TagIndex = StringTable.TagIndex
AND FloatTable.DateAndTime = StringTable.DateAndTime
数据用于表中,列为 TagIndex/TagNames,行为 DateAndTime。
如何让 DateAndTime 正确加入?
【问题讨论】:
标签: sql sql-server join