MS Access 将我的 column/alias 视为参数......但只是有时
MS Access treats my column/alias as a parameter... But only sometimes
SQL 的新手,但我很确定我的查询是正确的。我已经尝试了一千种不同的方式,但有时它仍然会将我的 column/alias lead_ID_t 视为参数。我将所有内容都放在方括号中以尝试提供帮助,但无济于事...
我正在 notepad++ 中编辑查询,当我将其粘贴到 Access 中时,运行就没问题了。然后我保存并关闭查询。当我再次尝试 运行 时,它会将 lead_ID_t 视为参数并且我的格式完全消失了......任何人都可以解释发生了什么吗?
SELECT [Total].[lead_ID_t] AS [Lead ID],
IIF(isnull([Total].[lead_count_t]-[F9].[lead_count_f]),0,[Total].[lead_count_t]-[F9].[lead_count_f]) AS [V Calls]
FROM (SELECT DISTINCT [Lead_ID] AS [lead_ID_t], Count([Lead_ID]) AS [lead_count_t]
FROM (SELECT * FROM [Logs] WHERE [log_actor] <> "Five9 Dialer") As [TData] GROUP BY [Lead_ID]) AS [Total]
LEFT JOIN (SELECT DISTINCT [Lead_ID] AS [Lead_ID_f], count([Lead_ID]) AS [lead_count_f]
FROM (SELECT * FROM [Logs] WHERE [log_actor] = "Five9 Dialer") As [FData] GROUP BY [Lead_ID]) AS [F9] ON [Total].[lead_ID_t]=[F9].[lead_ID_f];
ps。使用和不使用 iif 语句
都会出现相同的错误
考虑调整后的紧凑查询:
删除多余的嵌套级别,因为您可以在聚合 GROUP BY
查询中使用 WHERE
。
删除 DISTINCT
,因为聚合查询已经 return 个不同的分组值。
将 IIF()
(NULL
的 return 为零的声明)替换为 NZ()
。
虽然 Total 可能不是列出的 MS Access 或 JET 保留字,但它可能是 GUI 应用程序保留字,因此会导致问题。使用以前的子查询别名,TData 和 FData.
或者,对一个没有子查询或连接的主查询使用条件聚合,并且您可以在其中使用计算列来避免重复。
压缩查询
SELECT [TData].[lead_ID_t] AS [Lead ID],
NZ(([TData].[lead_count_t] - [FData].[lead_count_f]),0) AS [V Calls]
FROM
(SELECT [Lead_ID] AS [lead_ID_t],
COUNT([Lead_ID]) AS [lead_count_t]
FROM [Logs]
WHERE [log_actor] <> 'Five9 Dialer'
GROUP BY [Lead_ID]) AS [TData]
LEFT JOIN
(SELECT [Lead_ID] AS [Lead_ID_f],
COUNT([Lead_ID]) AS [lead_count_f]
FROM [Logs]
WHERE [log_actor] = 'Five9 Dialer'
GROUP BY [Lead_ID]) AS [FData]
ON [TData].[lead_ID_t] = [FData].[lead_ID_f];
条件聚合
SELECT l.[Lead ID],
SUM(IIF(l.[log_actor] <> 'Five9 Dialer', 1, 0)) AS [lead_count_t],
SUM(IIF(l.[log_actor] = 'Five9 Dialer', 1, 0)) AS [lead_count_f],
NZ(([lead_count_t] - [lead_count_f]),0) AS [V Calls]
FROM [Logs] l
GROUP BY l.[Lead_ID]
SQL 的新手,但我很确定我的查询是正确的。我已经尝试了一千种不同的方式,但有时它仍然会将我的 column/alias lead_ID_t 视为参数。我将所有内容都放在方括号中以尝试提供帮助,但无济于事...
我正在 notepad++ 中编辑查询,当我将其粘贴到 Access 中时,运行就没问题了。然后我保存并关闭查询。当我再次尝试 运行 时,它会将 lead_ID_t 视为参数并且我的格式完全消失了......任何人都可以解释发生了什么吗?
SELECT [Total].[lead_ID_t] AS [Lead ID],
IIF(isnull([Total].[lead_count_t]-[F9].[lead_count_f]),0,[Total].[lead_count_t]-[F9].[lead_count_f]) AS [V Calls]
FROM (SELECT DISTINCT [Lead_ID] AS [lead_ID_t], Count([Lead_ID]) AS [lead_count_t]
FROM (SELECT * FROM [Logs] WHERE [log_actor] <> "Five9 Dialer") As [TData] GROUP BY [Lead_ID]) AS [Total]
LEFT JOIN (SELECT DISTINCT [Lead_ID] AS [Lead_ID_f], count([Lead_ID]) AS [lead_count_f]
FROM (SELECT * FROM [Logs] WHERE [log_actor] = "Five9 Dialer") As [FData] GROUP BY [Lead_ID]) AS [F9] ON [Total].[lead_ID_t]=[F9].[lead_ID_f];
ps。使用和不使用 iif 语句
都会出现相同的错误考虑调整后的紧凑查询:
删除多余的嵌套级别,因为您可以在聚合
GROUP BY
查询中使用WHERE
。删除
DISTINCT
,因为聚合查询已经 return 个不同的分组值。将
IIF()
(NULL
的 return 为零的声明)替换为NZ()
。虽然 Total 可能不是列出的 MS Access 或 JET 保留字,但它可能是 GUI 应用程序保留字,因此会导致问题。使用以前的子查询别名,TData 和 FData.
或者,对一个没有子查询或连接的主查询使用条件聚合,并且您可以在其中使用计算列来避免重复。
压缩查询
SELECT [TData].[lead_ID_t] AS [Lead ID],
NZ(([TData].[lead_count_t] - [FData].[lead_count_f]),0) AS [V Calls]
FROM
(SELECT [Lead_ID] AS [lead_ID_t],
COUNT([Lead_ID]) AS [lead_count_t]
FROM [Logs]
WHERE [log_actor] <> 'Five9 Dialer'
GROUP BY [Lead_ID]) AS [TData]
LEFT JOIN
(SELECT [Lead_ID] AS [Lead_ID_f],
COUNT([Lead_ID]) AS [lead_count_f]
FROM [Logs]
WHERE [log_actor] = 'Five9 Dialer'
GROUP BY [Lead_ID]) AS [FData]
ON [TData].[lead_ID_t] = [FData].[lead_ID_f];
条件聚合
SELECT l.[Lead ID],
SUM(IIF(l.[log_actor] <> 'Five9 Dialer', 1, 0)) AS [lead_count_t],
SUM(IIF(l.[log_actor] = 'Five9 Dialer', 1, 0)) AS [lead_count_f],
NZ(([lead_count_t] - [lead_count_f]),0) AS [V Calls]
FROM [Logs] l
GROUP BY l.[Lead_ID]