首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server中CTE中的CTE

SQL Server中CTE中的CTE
EN

Stack Overflow用户
提问于 2014-04-10 21:34:18
回答 4查看 10.1K关注 0票数 3

请不要将此问题标记为CTE within a CTE的重复。我检查了问题和答案..。但是这个答案并不能满足我的需求。

我想运行嵌套CTE查询,如下所示

代码语言:javascript
复制
Drop Table #Temp
Create Table #Temp(name1 text, name2 text)

Insert INTO #Temp Values ('test','test')
Insert INTO #Temp Values ('test','test')

;WITH CTE1 AS (
   With CTE2 as ( Select * from #Temp)
)

Select * from CTE1

代码语言:javascript
复制
;WITH CTE1 AS (
   Select * From (With CTE2 as ( Select * from #Temp))
)

Select * from CTE1

在我们的结构中。内部CTE2查询已由其他系统提供。所以我不能控制查询的内部...所以..。这里我的职责只是从内部查询中选择值,并在我的系统中形成新的CTE…

请想象一下这一点

代码语言:javascript
复制
;WITH CTE1 AS (
       "Query Provide by Other System"
    )

在某些情况下,以CTE..this开头的“由其他系统提供的查询”可能是也可能不是CTE查询……这就是问题所在,因为我不能像下面这样使用

代码语言:javascript
复制
;WITH CTE1 AS (
   Select * From 
)
,With CTE2 as
 ( Select * from #Temp))

请帮助任何人实现这一点,我想我的需求太动态了。

EN

回答 4

Stack Overflow用户

发布于 2014-04-10 21:40:35

我有个想法:

代码语言:javascript
复制
;WITH cte1 AS
(
    SELECT * FROM ...
),
cte2 as
(
    SELECT * FROM ...
),
cte3 as
(
    SELECT * FROM ... INNER JOIN cte2 ON...
),
SELECT *
FROM
    cte1
    INNER JOIN cte3 ON   ...
票数 7
EN

Stack Overflow用户

发布于 2014-04-10 21:41:30

使用,分隔CTE,而不是嵌套它们。

代码语言:javascript
复制
;
WITH
  CTE2 AS
(
  SELECT * FROM #Temp
)
,
  CTE1 AS
(
  SELECT * FROM CTE2
)

SELECT
  *
FROM
  CTE1

编辑:关注您的其他评论

据我所知,向您提供了一个系统生成的查询,然后您希望将其嵌入到另一个查询中。系统生成的查询有时使用CTE,有时不使用;您事先不知道该查询的格式。

不幸的是,对你来说,这意味着你的不能嵌入到另一个CTE中。

一种选择是使用真实的视图。

代码语言:javascript
复制
CREATE VIEW xxx AS
  <system generated code here>
;

SELECT
  *
FROM
  xxx
;

但是,您必须非常小心并发;两个并发用户试图创建具有相同名称的相同视图。

更好的解决方案是与系统供应商接触,创建系统生成的查询,并询问他们建议您如何使用它。

票数 5
EN

Stack Overflow用户

发布于 2014-04-10 21:44:30

代码语言:javascript
复制
;with BASE AS (
    SELECT * FROM table1
), BASE2 AS (
   SELECT * from table2
), BASE3 AS (
    SELECT * FROM table3
) SELECT * FROM BASE INNER JOIN BASE3 ...

我猜这就是你想要做的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22989597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档