我有两个表tbl_data和tbl_events。
表tbl_data包含在站点中组织的各种事件。列将是SiteNo,EventName和EventDate。在站点中执行的每个事件都将与eventdate一起记录在此表中。
tbl_events表是一个查找表,其中包含站点中可能发生的所有事件。
某些网站可能会完成某些活动,而某些活动尚未完成。我想要网站待处理的事件列表。
我使用左外连接和左连接来组合tbl_data和tbl_events表但是我'只获取发生的事件列表。但是,我想找到网站的遗失或待处理的。
下面是我的sql代码:
SELECT DISTINCT SiteID
,le.eventname
,eventdate
FROM lu_events AS le
LEFT JOIN ( SELECT SiteID
,e.eventname
,d.eventdate
FROM tbl_data d
LEFT OUTER JOIN lu_events e ON d.eventname = e.eventname
) AS Grp ON Grp.eventname = le.eventname;
这是我对上述sql查询的输出
但是我需要输出中所有丢失的行,以便我可以计算有多少事件待处理。
以下是我要求的输出。
我尝试了很多但无法获得上述输出。
这是我的db脚本。我在sql小提琴中遇到了一些问题。所以把它上传到我的onedrive。
答案 0 :(得分:0)
试试这个:
SELECT *
FROM ( SELECT d.siteid
,e.EventName
FROM ( SELECT e.siteid
FROM tbl_data e
GROUP BY e.SiteID
) d
CROSS JOIN lu_events e
) tab
LEFT OUTER JOIN tbl_data d ON d.EventName = tab.EventName
AND d.SiteID = tab.SiteID
ORDER BY tab.SiteID
阿尔伯特