SQL Server 2016 虚拟表 - 语法不正确的"AS"



假设一个表level包含列level_idlevel_name

我的 SQL Server 2016 查询中有一个虚拟表:

这不是一个真正的查询 - 我已经尽可能地简化了它以说明错误

SELECT
    LEVEL .level_id,
    LEVEL .level_name
FROM
    LEVEL,
    ((SELECT
          LEVEL_ID AS lev_sum_level_id
      FROM
          LEVEL
      GROUP BY
          level_id) AS lev_sum
     JOIN
         (SELECT
              LEVEL_ID AS lev_det_level_id
          FROM
              LEVEL
          GROUP BY
              level_id) AS lev_det ON (lev_sum_level_id = lev_det_level_id)
  ) AS totals

语法错误位于第 AS totals 行。

Msg 156,级别 15,状态 1,第 35
行 关键字"AS"附近的语法不正确

为什么 SQL Server 不允许使用此语法?如果我简化虚拟表查询,似乎很好。Postgres 允许按原样进行

我认为您可以尝试添加一个选择,以便您可以完成语句的语法

请尝试

SELECT
T1.MiscID,
T2.lev_sum_level_id
FROM
Miscs AS T1,
(
    SELECT * FROM
    (
        SELECT
            MiscID AS lev_sum_level_id
        FROM
            Miscs
        GROUP BY
            MiscID
    ) AS lev_sum
    JOIN
    (
        SELECT
            MiscID AS lev_det_level_id
        FROM
            Miscs
        GROUP BY
            MiscID
    ) AS lev_det 
    ON( lev_sum_level_id = lev_det_level_id )
) AS T2

最新更新