Materi
WITH nama AS (SELECT ...) memberi nama pada hasil kueri sementara yang disebut common table expression atau CTE. Nama itu dipakai seperti tabel biasa di kueri utamanya, meski tidak ada tabel baru yang dibuat dan tidak ada yang tersimpan setelah kueri selesai. Beberapa CTE ditulis berurutan dengan dipisah koma, dan CTE yang belakangan boleh membaca hasil CTE di atasnya.
WITH elektronik AS (
SELECT * FROM produk WHERE kategori = 'Elektronik'
)
SELECT nama, harga FROM elektronik WHERE harga > 70000;CTE membuat kueri bertahap terbaca dari atas ke bawah: tahap pertama menyiapkan data, kueri utama memakainya. Kegunaannya paling terasa pada laporan yang menumpuk dua ringkasan. Rekap omzet bulanan yang hanya menampilkan bulan di atas seratus juta, misalnya, ditulis sebagai WITH bulanan AS (SELECT strftime('%Y-%m', tanggal) AS periode, SUM(nilai) AS total FROM faktur GROUP BY periode) SELECT periode, total FROM bulanan WHERE total > 100000000. Tanpa CTE, ringkasan itu harus ditulis dua kali di dalam satu kueri.