Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server 2016虚拟表-语法“AS”不正确_Sql Server - Fatal编程技术网

Sql server SQL Server 2016虚拟表-语法“AS”不正确

Sql server SQL Server 2016虚拟表-语法“AS”不正确,sql-server,Sql Server,假设表级别包含列level\u id和level\u 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\u id和level\u 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
语法错误作为总计出现在行中

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


为什么SQL Server不允许这种语法?如果我简化虚拟表查询,看起来很好。Postgres允许它保持原样

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

请试一试

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

您在没有AS别名的情况下尝试过吗?T-sql和postgresql是不可互换的,而且您的语法非常时髦。您真的应该在SQLServer中使用ANSI-95 SQL语法。进一步阅读:查询看起来无效。看起来查询应该添加一个select。因为您只是将两个表连接在一起,但它没有提供应该从datasethanks中提取的内容。似乎Postgres推断出了这一点,而MSSQL则没有