Anda harus mengutamakan CTE dan kemudian menggabungkan INSERT INTO dengan pernyataan pilihan Anda. Juga, kata kunci "AS" yang mengikuti nama CTE bukan opsional:
WITH tab AS (
bla bla
)
INSERT INTO dbo.prf_BatchItemAdditionalAPartyNos (
BatchID,
AccountNo,
APartyNo,
SourceRowID
)
SELECT * FROM tab
Harap perhatikan bahwa kode mengasumsikan bahwa CTE akan mengembalikan tepat empat bidang dan bidang-bidang tersebut sesuai dengan urutan dan jenis dengan yang ditentukan dalam pernyataan INSERT. Jika bukan itu masalahnya, ganti saja "SELECT *" dengan bidang tertentu yang Anda butuhkan.
Adapun pertanyaan Anda tentang menggunakan fungsi, saya akan mengatakan "itu tergantung". Jika Anda meletakkan data dalam tabel hanya karena alasan kinerja, dan kecepatannya dapat diterima saat menggunakannya melalui suatu fungsi, maka saya akan menganggap fungsi sebagai pilihan. Di sisi lain, jika Anda perlu menggunakan hasil CTE di beberapa pertanyaan berbeda, dan kecepatan sudah menjadi masalah, saya akan memilih tabel (baik reguler, atau temp).
DENGAN common_table_expression (Transact-SQL)
Ya:
Perhatikan bahwa ini untuk SQL Server, yang mendukung beberapa CTE:
Teradata hanya mengizinkan satu CTE dan sintaksnya adalah sebagai contoh Anda.
sumber