Tsql 未识别CTE
为什么我的CTE无法从上次选择中访问?我特别问我是如何列出我的CTE的,我遗漏了一些简单的东西,比如我如何区分最后两个Tsql 未识别CTE,tsql,Tsql,为什么我的CTE无法从上次选择中访问?我特别问我是如何列出我的CTE的,我遗漏了一些简单的东西,比如我如何区分最后两个 with ParentsIdsWhoHaveInventoryWithManifests_CTE(brokerIds) as (...) ...) select someField from ParentsIdsWhoHaveInventoryWithManifests_CTE ;with SpecificBrokers
with ParentsIdsWhoHaveInventoryWithManifests_CTE(brokerIds)
as (...)
...)
select someField from ParentsIdsWhoHaveInventoryWithManifests_CTE
;with SpecificBrokersTicketIds_CTE(ticketIds)
as (...)
select someFieldfrom ParentsIdsWhoHaveInventoryWithManifests_CTE
;with ProductionIdsWhichHaveManifests_CTE(productionIds)
as (...)
select productionIds from ProductionIdsWhichHaveManifests_CTE
;with InventoryRow_CTE(row)
as (select row from Inventory where TicketId = @TicketId)
;with InvenotrySection_CTE(section)
as (select section from Inventory where TicketId = @TicketId)
select @ManifestId = ManifestId from Productions p where p.ProductionId = @ProductionId
select @ProductionId as ProductionId_Used
select @ManifestId as ManifestId_Used
select @TicketId = TicketId from inventory where ProductionId = @ProductionId
...
update Venue_ManifestDetails
set Row = row from InventoryRow_CTE,
Section = section from InvenotrySection_CTE
where TicketId = @TicketId
问题是它无法在我的update语句中识别InventoryRow\u CTE或InvenotrySection\u CTE。您只能在一个后续语句中使用CTE。不能在两个或多个语句中使用它 解释如下: 可以将公共表表达式CTE视为在单个SELECT、INSERT、UPDATE、DELETE或CREATE VIEW语句的执行范围内定义的临时结果集 如果要存储CTE的结果,请使用临时表或视图,并将CTE中的所有记录放入其中。CTE只是语法 如果需要重复使用,请重复使用 我知道这看起来很奇怪,但事实就是这样 这只是语法复制粘贴
您可以使用temp或表格变量您可以有一个“with”bur多个cte子句和一个“select”每个cte。这就是语法!CTE仅适用于后续声明。有关更多信息,请参见此:但我希望我的最后2个CTE摆脱这种模式并能够做到这一点,但您说这是不可能的?您需要使用视图或临时表-CTE只是声明后单个语句可用的临时视图。