3 回答
TA贡献1865条经验 获得超7个赞
您需要先放置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)
TA贡献1804条经验 获得超7个赞
是的:
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 y
Teradata仅允许一个CTE,并且语法示例。
- 3 回答
- 0 关注
- 1880 浏览
添加回答
举报