我一直在尝试在stackoverflow上搜索类似的查询来修改以获得我需要的东西,但我似乎无法做到正确。我希望这里有人可以提供帮助。
我有两个表位于两个不同的数据库中。两个数据库都配置在同一台服务器上。表1称为“DiscreteLive”并位于数据库“运行时”中。表2称为“v_DiscreteHistory”,位于数据库'WWALMDB'中。
他们有以下字段
标记名(类型字符串)
值(类型整数 - >只能是1或0)
标记名(类型字符串)
Value(类型String - >只能为false)
EventStamp(类型日期时间)
描述(类型字符串)
'DiscreteLive'表只能有一个唯一的标记名行。外部软件将覆盖每个标记名的相应值字段。它基本上显示了系统的实时值。示例如下所示。例如,您永远不会在此表中找到两次Device1.Commfail。
Device1.Commfail
Device1.Auto
Device1.Man
Device2.Commfail
Device2.Auto
Device2.Man
Device3.Commfail
Device3.Auto
Device3.Man
Device4.commfail
Device4.Auto
Device4.Man
Device5.Commfail
Device5.Auto
Device5.Man
等
'v_DiscreteHistory'表是特定标记的历史记录。可以有多个相同标签的条目及其Description和EventStamp(偶数发生的时间)。
我要做的是过滤掉'DiscreteLive'表,只显示标记名为%.CommFail且值为1的标记值。然后我想获取该初始值的结果从'v_DiscreteHistory'查询并附加初始查询中这些标记的最新EventStamp和Description。
不确定是否可以这样做。如果您需要更多说明,请告诉我。
答案 0 :(得分:0)
SQL Server:这可能就是你要找的东西
SELECT
D.TagName
,D.Value
,V.Tagname
,V.Value,V.EventStamp
,V.Description
,MAX(V.EventStamp) AS 'LatestDate'
FROM
SERVER.Runtime.dbo.DiscreteHistory D
INNER JOIN
SERVER.WWALMDB.dbo.v_DiscreteHistory V
ON
D.Tagname = V.Tagname
WHERE
D.Value = 1
AND
V.Value LIKE '%.CommFail'
GROUP BY
D.TagName
,D.Value
,V.Tagname
,V.Value,V.EventStamp
,V.Description