标签: common-table-expression

在SQL Server 2005中排序分层查询

我有以下问题:我有一个用于维护分层数据的表.我想在SQL 2005中使用CTE.

WITH tree (id, parentid, code, name) AS
(
    SELECT id, ofs.ParentID, ofs.code, ofs.name
      FROM OrganizationFeatures ofs
     WHERE ofs.ParentID IS NULL

    UNION ALL

    SELECT ofs.id, ofs.ParentID, ofs.code, ofs.name
      FROM OrganizationFeatures ofs
      JOIN tree ON tree.ID = ofs.ParentID
)

select * from tree
Run Code Online (Sandbox Code Playgroud)

但我想按代码排序,结果如下:

1
1/1
1/1/1
1/1/2
1/2/1
1/2/2
2
4/1
Run Code Online (Sandbox Code Playgroud)

等任何想法?

sql-server sql-server-2005 hierarchical common-table-expression

7
推荐指数
1
解决办法
2775
查看次数

SQL CTE和ORDER BY影响结果集

我在下面粘贴了一个非常简化的SQL查询版本.我遇到的问题是该ORDER BY语句影响了我的CTE的选择结果.我无法理解为什么会这样,我最初的想法是在CTE中,我执行一些SELECT声明,然后ORDER BY应该对THOSE结果起作用.

不幸的是,我看到的行为是我的内心SELECT陈述受到了订单的影响,给了我不属于TOP 10.

以下是数据示例:(按ID以相反顺序索引)

ID,   Date
9600  2010-10-12
9599  2010-09-08
9598  2010-08-31
9597  2010-08-31
9596  2010-08-30
9595  2010-08-11
9594  2010-08-06
9593  2010-08-05
9592  2010-08-02
....
9573  2010-08-10
....
8174  2010-08-05
....
38    2029-12-20
Run Code Online (Sandbox Code Playgroud)

我的基本查询:

;with results as(
select TOP 10 ID, Date
from dbo.items
)
SELECT ID
FROM results
Run Code Online (Sandbox Code Playgroud)

查询返回:

ID,   Date
9600  2010-10-12
9599  2010-09-08
9598  2010-08-31
9597  2010-08-31
9596  2010-08-30
9595  2010-08-11
9594  2010-08-06
9593  2010-08-05 …
Run Code Online (Sandbox Code Playgroud)

sql sql-server common-table-expression sql-server-2008

7
推荐指数
2
解决办法
2万
查看次数

如何在深度优先搜索中正确标记树的分支

我有一个像这样结构的树:

     __2__3__4
    /   \__5__6
0__1___7/__8__9
   \\
    \\__10__11__12
     \__  __  __
        13  14  15
Run Code Online (Sandbox Code Playgroud)

节点1有四个子节点(2,7,10,13),节点2和节点7各有两个子节点(作为子节点共享节点5).我要做的是创建一个CTE,它提供包含父节点,节点,远离根的距离以及包含在其中的分支(或分支)的记录.

IF (OBJECT_ID('tempdb..#Discovered') IS NOT NULL)
BEGIN
    DROP TABLE #Discovered
END

CREATE TABLE #Discovered
(
    ID int PRIMARY KEY NOT NULL,
    Predecessor int NULL,
    OrderDiscovered int
);

INSERT INTO #Discovered (ID, Predecessor, OrderDiscovered)
VALUES (@nodeId, NULL, 0);

    --loop through node connections table in a breadth first manner
WHILE @@ROWCOUNT > 0
BEGIN
    INSERT INTO #Discovered (ID, Predecessor, OrderDiscovered)
    SELECT c.node2_id
               ,MIN(c.node1_id)
               ,MIN(d.OrderDiscovered) + 1

    FROM #Discovered d …
Run Code Online (Sandbox Code Playgroud)

t-sql common-table-expression sql-server-2008 depth-first-search

7
推荐指数
1
解决办法
855
查看次数

窗口函数和更多"本地"聚合

假设我有这个表:

select * from window_test;

 k | v
---+---
 a | 1
 a | 2
 b | 3
 a | 4
Run Code Online (Sandbox Code Playgroud)

最终我想得到:

 k | min_v | max_v
---+-------+-------
 a | 1     | 2
 b | 3     | 3
 a | 4     | 4
Run Code Online (Sandbox Code Playgroud)

但我会很高兴得到这个(因为我可以很容易地过滤它distinct):

 k | min_v | max_v
---+-------+-------
 a | 1     | 2
 a | 1     | 2
 b | 3     | 3
 a | 4     | 4
Run Code Online (Sandbox Code Playgroud)

使用PostgreSQL 9.1+窗口函数可以实现这一点吗?我试图了解我是否可以使用单独的分区来处理k=a此示例中的第一次和最后一次(按顺序排列v).

postgresql common-table-expression window-functions

7
推荐指数
1
解决办法
1402
查看次数

过度使用Oracle With子句?

我正在为当前雇主编写许多报告查询,利用Oracle的WITH子句允许自己创建简单的步骤,每个步骤都是一个面向数据的转换,它们相互构建以执行复杂的任务.

今天我注意到,过度使用该WITH条款可能会对Oracle服务器的资源产生负面影响.

任何人都可以解释为什么过度使用Oracle WITH子句可能导致服务器崩溃?或者指出一些我可以研究适当用例的文章?我开始WITH大量使用该子句来为我的代码添加结构并使其更容易理解.我希望在这里提供一些信息性的回复,我可以继续有效地使用它.

如果示例查询有用,我会尝试今天稍后发布.

谢谢!

sql oracle common-table-expression oracle11g

7
推荐指数
1
解决办法
3972
查看次数

使用SQL CTE表来包含路径和所有子项

我有以下分层树表

GO
DROP TABLE #tbl 
GO
CREATE TABLE #tbl (Id int , ParentId int)
INSERT  INTO #tbl (Id, ParentId) VALUES  (0, NULL)
INSERT  INTO #tbl (Id, ParentId) VALUES  (1, 0)
INSERT  INTO #tbl (Id, ParentId) VALUES  (2, 1)
INSERT  INTO #tbl (Id, ParentId) VALUES  (3, 1)
INSERT  INTO #tbl (Id, ParentId) VALUES  (4, 2)
INSERT  INTO #tbl (Id, ParentId) VALUES  (5, 2)
INSERT  INTO #tbl (Id, ParentId) VALUES  (6, 3)
INSERT  INTO #tbl (Id, ParentId) VALUES  (7, 3)
GO
Run Code Online (Sandbox Code Playgroud)

哪个映射到后面的树 …

sql sql-server common-table-expression

7
推荐指数
1
解决办法
2413
查看次数

如何在SQLite上使用CTE和更新/删除?

SQLite现在有CTE,文档说你可以使用它来插入,更新和删除查询 - 但只提供了select语句的例子.

我可以通过insert-select弄清楚CTE如何应用于插入; 但是如果没有from-clause,我们如何在更新或删除中使用它们呢?

sql sqlite common-table-expression sql-update

7
推荐指数
2
解决办法
2139
查看次数

使用SQL进行二进制搜索查询

我有一个在SQL Server 2014表中呈现的二叉树:

UserID ParentUserID Position 
----------------------------
1      Null         Null     <-- ROOT
2      1            Left
3      1            Right    <-- Last Right for ID=1 (CTE query return 3)
4      2            Left
5      4            Left
6      5            Left
7      6            Left     <-- Last Left for ID=1 (CTE query return 6)
Run Code Online (Sandbox Code Playgroud)

要获得最后一个id和最后一个id我正在使用CTE查询:

; with  left_hand_recurse as
(
        select  UserID
        ,       ParentUserID
        ,       1 as depth
        from    Table1 where ParentUserID is null
        union all
        select  child.UserID
        ,       child.ParentUserID
        ,       parent.depth + 1
        from    left_hand_recurse …
Run Code Online (Sandbox Code Playgroud)

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

7
推荐指数
1
解决办法
2289
查看次数

合并两个父>子表集

我需要将两个父>子表集中的数据合并/合并到第三个父>子表中.

表格如下所示:

表结构

这三组表的唯一区别是TableC有一TableType列可以帮助识别TableA记录和TableB记录之间的差异.

我的第一个想法是使用游标..这是创建表结构,插入一些记录,然后将数据合并在一起的代码.它工作得非常好,sooooo ....

--Create the tables

CREATE TABLE TableA
(
    ID int not null identity primary key,
    Name VARCHAR(30)
);

CREATE TABLE TableAChild
(
    ID int not null identity primary key,
    Parent int not null,
    Name VARCHAR(30),
    CONSTRAINT FK_A FOREIGN KEY (Parent) REFERENCES TableA(ID)
);

CREATE TABLE TableB
(
    ID int not null identity primary key,
    Name VARCHAR(30)
);

CREATE TABLE TableBChild
(
    ID int not null identity primary key,
    Parent int not null,
    Name VARCHAR(30), …
Run Code Online (Sandbox Code Playgroud)

sql sql-server cursor common-table-expression

7
推荐指数
1
解决办法
1332
查看次数

MSSQL中CTE,临时表和表变量的区别

所有都用于临时存储数据.

这3种临时表是否存在性能差异(时间复杂度和空间复杂度)?

性能问题应取决于结果是保存在磁盘还是内存中.

我搜索了很多,但没有得到满意的答案.

sql sql-server performance temp-tables common-table-expression

7
推荐指数
1
解决办法
2511
查看次数