子选择失败,但视图有效

Dav*_*len 5 sql t-sql sql-server sql-server-2005

我希望运行一个查询并从中获得结果.但是,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
Run Code Online (Sandbox Code Playgroud)

相反,我不得不使用查询创建一个View_1视图

SELECT DISTINCT Field_1, Field_2 
  FROM Table_1
Run Code Online (Sandbox Code Playgroud)

然后做一个

  SELECT COUNT(*) AS cnt, Field_2
    FROM View_1
GROUP BY Field_2 
  HAVING COUNT(*) > 1
Run Code Online (Sandbox Code Playgroud)

问题是为什么,在我看来它本质上是相同的SQL.

注意:字段,表格和视图名称已更改以保护无辜者.;-)

OMG*_*ies 13

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
Run Code Online (Sandbox Code Playgroud)