3 回答

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
您需要先放置CTE,然后將INSERT INTO與select語句結(jié)合在一起。而且,CTE名稱后面的“ AS”關(guān)鍵字不是可選的:
WITH tab AS (
bla bla
)
INSERT INTO dbo.prf_BatchItemAdditionalAPartyNos (
BatchID,
AccountNo,
APartyNo,
SourceRowID
)
SELECT * FROM tab
請(qǐng)注意,該代碼假定CTE將恰好返回四個(gè)字段,并且這些字段的順序和類型與INSERT語句中指定的匹配。如果不是這種情況,只需將“ SELECT *”替換為所需的特定字段即可。
至于您對(duì)使用函數(shù)的問題,我會(huì)說“取決于”。如果僅出于性能原因?qū)?shù)據(jù)放在表中,并且通過函數(shù)使用它時(shí)速度是可以接受的,那么我認(rèn)為函數(shù)是一種選擇。另一方面,如果您需要在幾個(gè)不同的查詢中使用CTE的結(jié)果,而速度已經(jīng)成為問題,那么我會(huì)選擇一個(gè)表(常規(guī)表或臨時(shí)表)。
帶common_table_expression(Transact-SQL)

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊
是的:
WITH tab (
bla bla
)
INSERT INTO dbo.prf_BatchItemAdditionalAPartyNos ( BatchID, AccountNo,
APartyNo,
SourceRowID)
SELECT * FROM tab
請(qǐng)注意,這是針對(duì)SQL Server的,它支持多個(gè)CTE:
WITH x AS (), y AS () INSERT INTO z (a, b, c) SELECT a, b, c FROM y
Teradata僅允許一個(gè)CTE,并且語法示例。
- 3 回答
- 0 關(guān)注
- 1972 瀏覽
添加回答
舉報(bào)