我正在尝试编写一个简单的子查询,该查询在连接2个表后计算结果集中唯一警报ID的数量。即
SELECT COUNT(DISTINCT ALARMTABLE.ID) FROM
(SELECT ALARMTABLE.ID FROM ALARMTABLE) AS AA
JOIN
(SELECT ALARMDESCRIPTIONTABLE.DESCRIPTION FROM ALARMDESCRIPTIONTABLE) AS BB
ON AA.ID=BB.ID
这两个表都有一个id列,它将一个表中的id与另一个表中的描述相关联。这个想法是我可以获得每个警报的计数和描述。 e.g。
AlarmDescription Alarm COUNT
-----------------------------------
Fire Alm 1000
Flood Alm 12
Tornado Alm 75
当我使用Microsoft查询运行时,我得到的是错误无法添加表'('。我做错了什么?
答案 0 :(得分:1)
您的SQL包含一些语法错误。
我想知道你所追求的SQL是否会更像这样:
SELECT BB.DESCRIPTION, COUNT(*)
FROM ALARMTABLE AS AA
INNER JOIN ALARMDESCRIPTIONTABLE AS BB
ON AA.ID = BB.ID
GROUP
BY BB.DESCRIPTION;
答案 1 :(得分:0)
首先,如果您对表进行别名,则必须通过别名引用它。所以改变:
SELECT COUNT(DISTINCT ALARMTABLE.ID) FROM
到
SELECT COUNT(DISTINCT AA.ID) FROM
其次,您获得的错误可能是MS Query尝试可视化SQL时。您可以通过添加一个简单的查询并对其进行编辑来解决这个问题。单击属性,然后单击连接的属性,再单击“定义”选项卡。然后,您可以在“命令文本”字段中编辑查询。
或者可能不那么痛苦:您可以将查询存储在视图中,并使用MS Query中的视图。