【发布时间】:2016-08-22 14:10:33
【问题描述】:
以下代码在 MS Access 中运行正常。但是,我正在尝试添加进一步的左连接。我的左连接将连接查询而不是表。
希望这是有道理的。
感谢帮助
SELECT
a.[business unit],
b.[Total Colleagues in DMS],
Sum(IIf([a].[Session Date] Is Not Null,1,0)) AS [Total Bookings],
Sum([a.Has Booking been cancelled (Yes / No)]) AS [Total Cancellations],
(Sum(IIf([a].[Session Date] Is Not Null,1,0))-Sum([a.Has Booking been cancelled (Yes / No)])) AS [Net Bookings],
Sum([a.lookup_attended]) AS Attended,
(b.[Total Colleagues in DMS]-(Sum(IIf([a].[Session Date] Is Not Null,1,0))-Sum([a.Has Booking been cancelled (Yes / No)]))) AS [Unbooked Spaces]
FROM
everything AS a
LEFT JOIN
(
SELECT
a.[business unit], count(*) AS [Total Colleagues in DMS]
FROM
(
SELECT DISTINCT
a.lookup_id,
A.[BUSINESS UNIT]
FROM
EVERYTHING AS a
WHERE
(a.status<>"leaver" Or a.status<>"Not in scope")
And
A.PROJECT Is Null
) AS [%$##@_Alias]
GROUP BY
a.[business unit]
) AS b
ON
a.[business unit] = b.[business unit]
WHERE
(
((a.status)<>"leaver" Or (a.status)<>"not in scope")
GROUP BY
a.[business unit],
b.[Total Colleagues in DMS],
b.[business unit];
【问题讨论】:
-
您在提出问题时需要提供更多信息,例如:您尝试加入的查询的名称是什么?它与列出的现有表格有何关系?添加此查询后,该联接与其他表之间的关系是什么,因为总和可能会关闭。
-
这有什么问题?重新格式化 SQL 后,
WHERE语句中缺少)。您只是遇到语法错误吗?您能否发布确切的错误消息(如果有)? -
表确实可以是查询(派生表、视图、存储的查询对象)。要加入第三张桌子,您需要将前两张放在括号中,例如
SELECT * FROM (T1 JOIN T2 ON T1.id = T2.id) JOIN T3 ON T1.id = T3.id(注意优化器不需要遵守指定的顺序)。