Sql 按union all使用multiple with语句的步骤

Sql 按union all使用multiple with语句的步骤,sql,sql-server,Sql,Sql Server,我犯了一个错误 关键字“with”附近的语法不正确。如果此语句是公共表表达式或xmlnamespaces子句,则前一条语句必须以分号结尾。“ 请帮助语法是 WITH L1 AS ( SELECT ) SELECT A FROM L1 UNION ALL SELECT A FROM TABLE UNION ALL WITH L2 AS ( SELECT ) SELECT A FROM L2 UNION ALL WITH L3 AS ( SELECT ) SELECT

我犯了一个错误

关键字“with”附近的语法不正确。如果此语句是公共表表达式或xmlnamespaces子句,则前一条语句必须以分号结尾。“

请帮助

语法是

WITH L1 AS
(
   SELECT
)
SELECT A FROM L1

UNION ALL

SELECT A FROM TABLE

UNION ALL

WITH L2 AS
(
   SELECT
)
SELECT A FROM L2

UNION ALL

WITH L3 AS
(
   SELECT
)
SELECT A FROM L3
有两种方法可以做到这一点:

With l1 ( a ) as ( Select ... )
   , l2 ( a ) as ( ... )
  Select ... From ...
  Union
  Select ... From ...


您不能在查询表达式的中间使用<代码> <代码>。<代码>使用< /COD>用于生成中间查询,以便在其他查询之后立即使用(意味着它不能被多个独立查询使用)。 因此,您可能需要以下内容:

WITH CTE_L AS
(
    SELECT A FROM L1
    UNION ALL
    SELECT A FROM L2
    UNION ALL
    SELECT A FROM L3
)
SELECT * FROM CTE_L

您不需要WITHAS子句。
WITH CTE_L AS
(
    SELECT A FROM L1
    UNION ALL
    SELECT A FROM L2
    UNION ALL
    SELECT A FROM L3
)
SELECT * FROM CTE_L
WITH L1 
AS
(
    SELECT ...
),
L2 AS
(
    SELECT ...
),
L3 AS
(
    SELECT ...
)

// begin final query    
SELECT A FROM L1
UNION ALL
SELECT A FROM TABLE
UNION ALL
SELECT A FROM L2
UNION ALL
SELECT A FROM L3