Tag: common table expression

公用expression式,为什么是分号?

通常在SQL Server公共expression式子句中,语句前面有分号,如下所示: ;WITH OrderedOrders AS –semicolon here ( SELECT SalesOrderID, OrderDate, ROW_NUMBER() OVER (ORDER BY OrderDate) AS 'RowNumber' FROM Sales.SalesOrderHeader ) SELECT * FROM OrderedOrders WHERE RowNumber BETWEEN 50 AND 60 为什么?

CTE错误:“锚点和recursion部分之间的types不匹配”

我正在执行以下声明: ;WITH cte AS ( SELECT 1 as rn, 'name1' as nm UNION ALL SELECT rn + 1, nm = 'name' + CAST((rn + 1) as varchar(255)) FROM cte a WHERE rn < 10) SELECT * FROM cte …完成错误… Msg 240, Level 16, State 1, Line 2 Types don't match between the anchor and the […]

保持简单,以及如何在查询中执行多个CTE

我有这个简单的T-SQL查询,它从一个表中发出一堆列,并且还从其他相关表中join信息。 我的数据模型很简单。 我有一个预定的活动,与参与者。 我需要知道每个事件有多less参与者。 我的解决scheme是添加一个CTE,将预定事件分组,并统计参与者的数量。 这将允许我参加每个预定活动的信息。 保持查询简单。 但是,如果我将来需要在简单查询期间添加其他临时结果,我该怎么办? 我真的很喜欢它,如果我可以有多个CTE,但我不能,对不对? 我在这里有什么select? 我排除了应用程序数据层的视图和做事情。 我宁愿孤立我的SQL查询。

如何使用SELECT * INTO tempTable FROM CTE Query创buildTemp表

我有一个MS SQL CTE查询,我想从中创build一个临时表。 我不知道该怎么做,因为它提供了一个Invalid Object name错误。 以下是整个查询供参考 SELECT * INTO TEMPBLOCKEDDATES FROM ;with Calendar as ( select EventID, EventTitle, EventStartDate, EventEndDate, EventEnumDays,EventStartTime,EventEndTime, EventRecurring, EventStartDate as PlannedDate ,EventType from EventCalender where EventActive = 1 AND LanguageID =1 AND EventBlockDate = 1 union all select EventID, EventTitle, EventStartDate, EventEndDate, EventEnumDays,EventStartTime,EventEndTime, EventRecurring, dateadd(dd, 1, PlannedDate) ,EventType from Calendar […]

我怎样才能在一个SELECT语句中有多个公用表expression式?

我正在简化一个复杂的select语句的过程中,所以认为我会使用公用表expression式。 声明一个单一的cte工作正常。 WITH cte1 AS ( SELECT * from cdr.Location ) select * from cte1 是否有可能在同一个SELECT中声明和使用多个cte? 即这个SQL提供了一个错误 WITH cte1 as ( SELECT * from cdr.Location ) WITH cte2 as ( SELECT * from cdr.Location ) select * from cte1 union select * from cte2 错误是 Msg 156, Level 15, State 1, Line 7 Incorrect syntax […]

何时使用通用expression式(CTE)

我已经开始阅读关于公共表expression式的内容 ,并且不能想到需要使用它的用例。 他们似乎是多余的,因为派生表可以做同样的事情。 有什么我失踪或理解不好? 有人可以给我一个简单的例子限制常规select,派生或临时表查询,使CTE的情况下? 任何简单的例子将不胜感激。

你能为Common Tableexpression式创build嵌套的WITH子句吗?

WITH y AS ( WITH x AS ( SELECT * FROM MyTable ) SELECT * FROM x ) SELECT * FROM y 有这样的工作吗? 我早些时候尝试过,但我无法得到它的工作。

PostgreSQL多INSERT … RETURNING多列

我用Postgres 9.3build立一个数据库作为后台,有3个表格: table1 (user_id, username, name, surname, emp_date) table2 (pass_id, user_id, password) table3 (user_dt_id, user_id, adress, city, phone) 可以看出table2和table3是table1子表。 我可以提取table1 (父)中新插入行的user_id : INSERT INTO "table1" (default,'johnee','john','smith',default) RETURNING userid; 我需要将新提取的id(从table1 )插入到table2和table3 user_id列以及这些表的唯一其他数据。 基本上3 X INSERT … 我怎么做?

从CTE更新表中的logging

我有以下CTE将给我整个发票的DocTotal。 ;WITH CTE_DocTotal AS ( SELECT SUM(Sale + VAT) AS DocTotal FROM PEDI_InvoiceDetail GROUP BY InvoiceNumber ) UPDATE PEDI_InvoiceDetail SET DocTotal = CTE_DocTotal.DocTotal 现在有了这个结果,我想进入PEDI_InvoiceDetail里的DocTotal值列。 我知道不会工作,我知道我错过了什么,是什么?

将行插入到一个查询中的多个表中,从一个涉及的表中进行select

我有两个表格(即,每一个foo链接到一个吧)。 CREATE TABLE foo ( id INTEGER PRIMARY KEY, x INTEGER NOT NULL, y INTEGER NOT NULL, …, bar_id INTEGER UNIQUE NOT NULL, FOREIGN key (bar_id) REFERENCES bar(id) ); CREATE TABLE bar ( id INTEGER PRIMARY KEY, z INTEGER NOT NULL, … ); 在foo中使用嵌套查询来满足特定条件很容易: INSERT INTO foo (…) (SELECT … FROM foo WHERE …) 但我无法弄清楚如何在foo为每行创build一个关联的行的副本,并将bar的id插入到新的foo行中。 […]