使用多个WITH 表名 AS (...) 语句 SQL Server

Cho*_*ots 2 sql sql-server sql-server-2008

我正在尝试创建两个临时表并将它们与永久表连接起来。例如:

WITH temp1 AS (COUNT(*) AS count_sales, ID FROM table1 GROUP BY ID)
WITH temp2 AS (COUNT(*) AS count_somethingelse, ID FROM table2 GROUP BY ID)
SELECT *
FROM table3 JOIN table2 JOIN table1
     ON table1.ID = table2.ID = table3.ID
Run Code Online (Sandbox Code Playgroud)

但似乎存在多个WITH tablename AS (...) 语句的问题。我尝试了一个分号。

Gor*_*off 6

您的查询应该看起来更像这样:

WITH temp1 AS (
      SELECT COUNT(*) AS count_sales, ID
      FROM table1
      GROUP BY ID
     ),
     temp2 AS (
      SELECT COUNT(*) AS count_somethingelse, ID
      FROM table2
      GROUP BY ID
     )
SELECT *
FROM temp2 JOIN 
     temp1
     ON temp1.ID = temp2.ID;
Run Code Online (Sandbox Code Playgroud)

您的查询有多个错误。我建议您首先了解此版本为何有效——或者至少可以做一些除了报告语法错误之外的事情。然后,回去再研究一下 SQL。