Подвыбрать не удается, но, как вид, он работает - PullRequest
5 голосов
/ 10 мая 2011

Я надеялся выполнить один запрос и получить от него результаты.Однако MSSQL жалуется на синтаксическую ошибку рядом с ключевым словом GROUP.Я надеялся сделать следующее.

  SELECT COUNT(*) AS cnt,Field_2
    FROM (SELECT DISTINCT Field_1, Field_2 
            FROM Table_1)
GROUP BY Field_2 
  HAVING COUNT(*) > 1

Вместо этого мне пришлось создать представление View_1 с запросом

SELECT DISTINCT Field_1, Field_2 
  FROM Table_1

, а затем выполнить

  SELECT COUNT(*) AS cnt, Field_2
    FROM View_1
GROUP BY Field_2 
  HAVING COUNT(*) > 1

Вопрос в том, почему, на мой взгляд, это по сути тот же SQL.

Примечание. Имена полей, таблиц и представлений были изменены, чтобы защитить невинных.; -)

Ответы [ 2 ]

13 голосов
/ 10 мая 2011

SQL Server требует, чтобы вы указали псевдоним таблицы для производной таблицы / встроенного представления:

  SELECT COUNT(*) AS cnt, 
         x.Field_2
    FROM (SELECT DISTINCT Field_1, Field_2 
            FROM Table_1) AS x
GROUP BY x.Field_2 
  HAVING COUNT(*) > 1
0 голосов
/ 10 мая 2011

Ответ OMG Ponies на 100% правильный.

Я думаю, что это покажет те же результаты, но я не могу проверить сейчас:

SELECT COUNT(DISTINCT Field_1) AS cnt
     , Field_2
FROM Table_1
GROUP BY Field_2 
HAVING COUNT(DISTINCT Field_1) > 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...