您需要先放置CTE,然后将INSERT INTO与select语句结合在一起。而且,CTE名称后面的“ AS”关键字不是可选的:WITH tab AS ( bla bla)INSERT INTO dbo.prf_BatchItemAdditionalAPartyNos (BatchID,AccountNo,APartyNo,SourceRowID) SELECT * FROM tab请注意,该代码假定CTE将恰好返回四个字段,并且这些字段的顺序和类型与INSERT语句中指定的匹配。如果不是这种情况,只需将“ SELECT *”替换为所需的特定字段即可。至于您对使用函数的问题,我会说“取决于”。如果仅出于性能原因将数据放在表中,并且通过函数使用它时速度是可以接受的,那么我认为函数是一种选择。另一方面,如果您需要在几个不同的查询中使用CTE的结果,而速度已经成为问题,那么我会选择一个表(常规表或临时表)。带common_table_expression(Transact-SQL)
是的:WITH tab ( bla bla)INSERT INTO dbo.prf_BatchItemAdditionalAPartyNos ( BatchID, AccountNo,APartyNo,SourceRowID) SELECT * FROM tab请注意,这是针对SQL Server的,它支持多个CTE:WITH x AS (), y AS () INSERT INTO z (a, b, c) SELECT a, b, c FROM yTeradata仅允许一个CTE,并且语法示例。