#sql-server #excel
#sql-сервер #excel
Вопрос:
Я пытаюсь написать простой подзапрос, который подсчитывает количество уникальных идентификаторов тревоги в результирующем наборе после объединения 2 таблиц. т.е
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, который связывает идентификатор в одной таблице с описанием в другой. Идея в том, что я могу получить количество и описание для каждого сигнала тревоги. например
AlarmDescription Alarm COUNT
-----------------------------------
Fire Alm 1000
Flood Alm 12
Tornado Alm 75
Когда я запускаю это с помощью Microsoft query, все, что я получаю, это сообщение об ошибке can’t add table ‘(‘. Что я делаю не так?
Комментарии:
1. Производная таблица
BB
не имеетID
столбца, поэтому не может быть присоединена к таблицеAA
наAA.ID=BB.ID
.
Ответ №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;
Ответ №2:
Во-первых, если вы присваиваете таблице псевдоним, на нее должно быть указано псевдонимное имя. Итак, измените:
SELECT COUNT(DISTINCT ALARMTABLE.ID) FROM
Для
SELECT COUNT(DISTINCT AA.ID) FROM
Во-вторых, ошибка, которую вы получаете, вероятно, возникает, когда MS Query пытается визуализировать SQL. Вы можете обойти это, добавив тривиальный запрос и отредактировав его. Щелкните свойства, затем свойства соединения, затем вкладку Определение. Затем вы можете отредактировать запрос в текстовом поле Command.
Или, возможно, менее болезненно: вы могли бы сохранить запрос в представлении и использовать представление в MS Query.