SQL 服务器嵌套查询语法
SQL Server nested queries syntax
我希望有人能解释为什么这个查询会给我一个错误以及我该如何解决它。
这是语法:
With ID as (
select ID1 from.... where.... group by.....
), TYDATA as (
with MG as (
select IDMG, * from.... where.... group by.....
), TY as (
select ID1, IDMG, * from.... where.... group by.....
)
SELECT TY.*, MG.*
FROM TY LEFT JOIN MG ON TY.IDMG = MG.IDMG
)
SELECT ID.*, TYDATA.*
FROM ID LEFT JOIN TYDATA.ID1 ON ID.ID1=TYDATA.ID1
错误是第二个附近的“语法不正确”。
如果我 运行 每个查询分别我收到没有错误所以我猜这个连接的语法是错误的。
你能帮我理解这个错误并为我提供解决这个问题的替代方法吗
CTE 的定义不能嵌套。先前定义的 CTE 可用于后续 CTE,但应在顶层定义。
因此,结构应该是这样的:
With ID as (
select ID1 from.... where.... group by.....
),
MG as (
select IDMG, * from.... where.... group by.....
),
TY as (
select ID1, IDMG, * from.... where.... group by.....
),
TYDATA as (
SELECT TY.*, MG.*
FROM TY LEFT JOIN MG ON TY.IDMG = MG.IDMG
)
SELECT ID.*, TYDATA.*
FROM ID LEFT JOIN TYDATA.ID1 ON ID.ID1=TYDATA.ID1
我希望有人能解释为什么这个查询会给我一个错误以及我该如何解决它。 这是语法:
With ID as (
select ID1 from.... where.... group by.....
), TYDATA as (
with MG as (
select IDMG, * from.... where.... group by.....
), TY as (
select ID1, IDMG, * from.... where.... group by.....
)
SELECT TY.*, MG.*
FROM TY LEFT JOIN MG ON TY.IDMG = MG.IDMG
)
SELECT ID.*, TYDATA.*
FROM ID LEFT JOIN TYDATA.ID1 ON ID.ID1=TYDATA.ID1
错误是第二个附近的“语法不正确”。 如果我 运行 每个查询分别我收到没有错误所以我猜这个连接的语法是错误的。 你能帮我理解这个错误并为我提供解决这个问题的替代方法吗
CTE 的定义不能嵌套。先前定义的 CTE 可用于后续 CTE,但应在顶层定义。
因此,结构应该是这样的:
With ID as (
select ID1 from.... where.... group by.....
),
MG as (
select IDMG, * from.... where.... group by.....
),
TY as (
select ID1, IDMG, * from.... where.... group by.....
),
TYDATA as (
SELECT TY.*, MG.*
FROM TY LEFT JOIN MG ON TY.IDMG = MG.IDMG
)
SELECT ID.*, TYDATA.*
FROM ID LEFT JOIN TYDATA.ID1 ON ID.ID1=TYDATA.ID1