标签: common-table-expression

SQL Server是否支持类似Oracle的子句?

我已经看到过几次提到Oracle WITH子句来为这样的子查询别名:

WITH myData AS (SELECT id, text FROM SomeTable)
SELECT myData from SomeOtherTable
Run Code Online (Sandbox Code Playgroud)

是否有任何版本的SQL Server支持此功能?如果没有,他们有没有特别的理由?性能?错误使用的可能性?

sql t-sql sql-server oracle common-table-expression

0
推荐指数
1
解决办法
3028
查看次数

sql server 2008中的公用表表达式

如果可能的话,直接在C sharp中调用CTE.任何人都可以告诉我如何在C sharp中调用CTE?

.net c# sql-server common-table-expression c#-3.0

0
推荐指数
1
解决办法
1903
查看次数

如何在Entity Framework 5中集成CTE查询

我有一个使用CTE编写的SQL查询.现在,我正在移动存储库以使用Entity Framework 5.

关于如何使用Entity Framework 5集成(或重写)基于CTE的查询,我感到很遗憾.

我正在使用EF5的POCO实体并拥有一堆Map类.没有EDMX文件等.

我现在感觉自己像一个完全的noob,并希望任何帮助指向我正确的方向.

CTE查询如下

WITH CDE AS
(
    SELECT * FROM collaboration.Workspace AS W WHERE W.Id = @WorkspaceId
    UNION ALL
    SELECT W.* FROM collaboration.Workspace AS W INNER JOIN CDE ON W.ParentId = CDE.Id AND W.ParentId <> '00000000-0000-0000-0000-000000000000'
)
SELECT
    W.Id AS Id,
    W.Name AS Name,
    W.Description AS Description,
    MAX(WH.ActionedTimeUtc) AS LastUpdatedTimeUtc,
    WH.ActorId AS LastUpdateUserId
FROM
    collaboration.Workspace AS W
    INNER JOIN
    collaboration.WorkspaceHistory AS WH ON W.Id = WH.WorkspaceId
    INNER JOIN
    (
        SELECT TOP 10
            CDE.Id
        FROM …
Run Code Online (Sandbox Code Playgroud)

common-table-expression entity-framework-5

0
推荐指数
1
解决办法
2480
查看次数

CTE真正的递归?

我刚刚在今天下午发现CTE并在2小时内享受它们后,我意识到他们并没有像我们用其他任何语言学到的那样进行常见的递归.

我的意思是,我总是看到像树搜索一样的递归.所以我期待CTE一直到它发现的第一片叶子,但没有.他分层工作.它从头部开始,然后是所有分支,然后是所有子分支等等......然后是叶子.

有没有办法让它以不同的方式进行搜索?也许我错过了一些东西......我在SQL Server 2005上工作(非,我无法改变2008年)

为了清楚起见,我不想要:

  1. TEAM1
  2. TEAM2
  3. team3
  4. team1-1
  5. team3-1
  6. team1-2

  1. TEAM1
  2. team1-1
  3. team1-2
  4. TEAM2
  5. team3
  6. team3-1

谢谢

t-sql recursion common-table-expression

0
推荐指数
1
解决办法
364
查看次数

递归查询使用CTE,从父级获取

我有一张桌子

Node | NoteParent | Num
  A  |     Root   | 10      
  B  |     A      | 20
  C  |     A      | 30
  G  |     B      | 40
  D  |     B      | 50
  E  |     G      | 70
  F  |     C      | 60
Run Code Online (Sandbox Code Playgroud)

我有一个问题,我如何使用CTE来求和节点的数量取决于它与另一个节点的链接.例如,我有节点B有Num是20,节点B是节点G和节点D的父节点,节点G也是节点E的父节点所以我将使用所有数量的相关节点20(B)+ 40( G)+ 50(D)+ 70(E)= 180

结果将是:

Node | NoteParent |  Num  |  SUM 
  A  |    Root    |  10   |  280
  B  |     A      |  20   |  180   
  C  |     A      |  30   |   90 
  G  |     B      | …
Run Code Online (Sandbox Code Playgroud)

sql-server recursion hierarchy common-table-expression

0
推荐指数
1
解决办法
597
查看次数

用于展平树的简单公用表表达式

以下是我的表格格式.表名:: USERS

userid reporttouserid
------ ------------
101    NULL
102    101
103    102
Run Code Online (Sandbox Code Playgroud)

现在我需要一个查询来列出101下的所有子用户ID 102和103两者(103是间接在101以下,因为其父102在101以下)

我在postgresql中看到了常见的表表达式,但却无法弄清楚如何去做.

sql postgresql common-table-expression

0
推荐指数
1
解决办法
804
查看次数

CTE问题,执行时出错.无法创建摘要报告

我想创建一个摘要报告.我对CTE来说是全新的.

错误详情:

消息102,级别15,状态1,行1
'''附近的语法不正确.
消息102,级别15,状态1,行11
'','附近的语法不正确.

码:

WITH T1(PlannedFY, Media_Activity_Type.[Type], ReportingQuarter, Summary, ID) AS  
(
    SELECT 
       COUNT(MediaActivities.MediaActivityId) AS [PlannedFY],
       Media_Activity_Type.[Type] AS [ID], 
       MediaActivities.ReportingQuarter, 
       MediaActivities.Summary,
       MediaActivities.TypeId
    FROM 
       Media_Activity_Type 
    INNER JOIN
       MediaActivities ON Media_Activity_Type.TypeId = MediaActivities.TypeId
    GROUP BY 
       MediaActivities.MediaActivityId, Media_Activity_Type.[Type],  
       MediaActivities.ReportingQuarter, MediaActivities.Achivied, 
       MediaActivities.Summary, MediaActivities.TypeId
),
T2(Achieved, ID) AS
(              
   SELECT     
      COUNT(MediaActivities.Achivied) AS [Achieved], 
      Media_Activity_Type.TypeId AS [ID]
   FROM         
      MediaActivities 
   INNER JOIN
      Media_Activity_Type ON MediaActivities.TypeId = Media_Activity_Type.TypeId
   GROUP BY 
      Media_Activity_Type.TypeId, MediaActivities.Achivied
   HAVING 
      MediaActivities.Achivied = 1
)    
SELECT 
   T1.*, T2.Achieved 
FROM 
   T1     
INNER JOIN 
   T2 …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server common-table-expression

0
推荐指数
1
解决办法
39
查看次数

用于临时表创建的WITH和INTO之间的区别

WITHINTO看起来非常相似.两者都创建临时表.它们的区别是什么?

sql t-sql sql-server common-table-expression

0
推荐指数
1
解决办法
51
查看次数

Vertica - 使用WITH与INSERT语句一起使用

我有一个SQL查询

with subtable as (
................
)
select * 
from subtable
Run Code Online (Sandbox Code Playgroud)

我想将select语句中的记录插入表中.寻找像这样的东西:

with subtable as (......)
insert into newtable 
select * 
from subtable
Run Code Online (Sandbox Code Playgroud)

但是,在Vertica中,INSERT不能与WITH(CTE)语句一起使用.

这有什么工作吗?

谢谢您的帮助

sql common-table-expression vertica sql-insert

0
推荐指数
1
解决办法
1696
查看次数

可以在另一个CTE中调用CTE,CTE2可以使用CTE1结果吗?

例子假设:

 with CTE1 as (select col1 from t1) select * from CTE1;
    with CTE2 as (select col2 from t2 where col2=col1)
    select * from CTE2;
Run Code Online (Sandbox Code Playgroud)

这可能吗.我尝试过很少的代码,但没有一个是有用的.请帮我.

sql oracle common-table-expression oracle12c

0
推荐指数
1
解决办法
92
查看次数