也许我正在接近整个问题 - 或者效率低下。
基本上,我试图根据两个标准组合两个数据视图,其中一个是日志表:
vw_FusionRVDB_Schedule(RoomName,StartTime,EndTime,Subject等) 其中包含所有索引房间的事件计划 - UTC时间。
vw_FusionRVDB_DisplayUsageHistory(RoomName,OnTime,OffTime等) 这是一个已配对的活动日志,仅在房间显示开启和关闭时显示 - 以UTC为单位。
我希望将显示的开/关活动与记录的活动发生时在会议室中安排的事件进行匹配。
查询非常长,包含很多派生字段。希望只关注加入部分会更清楚。
SELECT <foo>
FROM dbo.vw_FusionRVDB_Schedule
INNER JOIN dbo.vw_FusionRVDB_DisplayUsageHistory
ON dbo.vw_FusionRVDB_Schedule.RoomName =
dbo.vw_FusionRVDB_DisplayUsageHistory.RoomName
AND dbo.vw_FusionRVDB_Schedule.EndTime >=
dbo.vw_FusionRVDB_DisplayUsageHistory.OnTime
AND dbo.vw_FusionRVDB_Schedule.StartTime <=
dbo.vw_FusionRVDB_DisplayUsageHistory.OffTime
此查询效果很好。根据设计,一些事件不止一次列出。当在同一事件的窗口内发生多个开/关显示周期时,会发生这种情况。类似地,如果在一个事件之前或期间打开房间显示并通过后续事件保持打开,则在第一个和第二个事件记录上使用来自该单个日志条目的数据。因此,此查询正在完成此方面所需的操作。
但是,我还想在vw_FusionRVDB_DisplayUsageHistory中添加回输出的预定事件(来自vw_FusionRVDB_Schedule视图),这些事件没有相应的记录活动。
我已经在另一个vw_FusionRVDB_Schedule视图查询上尝试了UNION上的各种表单,其中包含空值以及从vw_FusionRVDB_DisplayUsageHistory视图中获取或派生的字段。但它会重新添加所有计划的活动 - 而不仅仅是初始加入中没有匹配的活动。
如果需要,我可以提供更多详细信息。提前谢谢。
答案 0 :(得分:0)
HepC在评论中回答。我让结果让我感到困惑。左连接就是这个伎俩。