使用Excel的Microsoft Query查询子查询

时间:2011-05-13 14:16:40

标签: sql-server excel

我正在尝试编写一个简单的子查询,该查询在连接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查询运行时,我得到的是错误无法添加表'('。我做错了什么?

2 个答案:

答案 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中的视图。