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 關注
- 1978 瀏覽
添加回答
舉報