Saya memiliki kueri MS SQL CTE dari mana saya ingin membuat tabel sementara. Saya tidak yakin bagaimana melakukannya karena memberikan Invalid Object name
kesalahan.
Di bawah ini adalah seluruh permintaan untuk referensi
SELECT * INTO TEMPBLOCKEDDATES FROM
;with Calendar as (
select EventID, EventTitle, EventStartDate, EventEndDate, EventEnumDays,EventStartTime,EventEndTime, EventRecurring, EventStartDate as PlannedDate
,EventType from EventCalender
where EventActive = 1 AND LanguageID =1 AND EventBlockDate = 1
union all
select EventID, EventTitle, EventStartDate, EventEndDate, EventEnumDays,EventStartTime,EventEndTime, EventRecurring, dateadd(dd, 1, PlannedDate)
,EventType from Calendar
where EventRecurring = 1
and dateadd(dd, 1, PlannedDate) <= EventEndDate
)
select EventID, EventStartDate, EventEndDate, PlannedDate as [EventDates], Cast(PlannedDate As datetime) AS DT, Cast(EventStartTime As time) AS ST,Cast(EventEndTime As time) AS ET, EventTitle
,EventType from Calendar
where (PlannedDate >= GETDATE()) AND ',' + EventEnumDays + ',' like '%,' + cast(datepart(dw, PlannedDate) as char(1)) + ',%'
or EventEnumDays is null
order by EventID, PlannedDate
option (maxrecursion 0)
Saya akan menghargai titik di arah yang benar atau jika saya bisa membuat tabel sementara dari kueri CTE ini
sql
sql-server
common-table-expression
Belajar
sumber
sumber
Jawaban:
Contoh DDL
Pastikan bahwa tabel dihapus setelah digunakan
sumber
Benar-benar formatnya bisa sangat sederhana - kadang-kadang tidak perlu menentukan sebelumnya tabel temp - itu akan dibuat dari hasil pilih.
Jadi, kecuali Anda menginginkan tipe yang berbeda atau sangat ketat pada definisi, jaga agar semuanya tetap sederhana. Perhatikan juga bahwa setiap tabel sementara yang dibuat di dalam prosedur tersimpan secara otomatis dibatalkan ketika prosedur tersimpan selesai dijalankan. Jika prosedur tersimpan A membuat tabel temp dan memanggil prosedur tersimpan B, maka B akan dapat menggunakan tabel sementara yang dibuat A.
Namun, umumnya dianggap praktik pengkodean yang baik untuk secara eksplisit menghapus setiap tabel sementara yang Anda buat.
sumber
select * into #temp
tetapi, kedua kalinya eksekusi menghasilkan kesalahan: "Tabel #temp sudah ada dalam basis data" .The
SELECT ... INTO
kebutuhan untuk berada di pilih dari CTE.sumber
Bagaimana Cara Menggunakan TempTable dalam Prosedur yang Disimpan?
Berikut langkah-langkahnya:
BUAT Tabel TEMP
Masukkan data TEMP SELECT ke dalam tabel TEMP
SELECT TEMP TABLE (Sekarang Anda dapat menggunakan kueri pemilihan ini)
FINAL LANGKAH DROP MEJA
Saya harap ini akan membantu. Sederhana dan Jelas :)
sumber
Di sini dengan menggunakan klausa ke dalam tabel langsung dibuat
sumber
Berikut ini sedikit perubahan pada jawaban kueri yang membuat tabel setelah eksekusi (yaitu Anda tidak harus membuat tabel terlebih dahulu):
sumber