Apakah mungkin untuk menggabungkan hasil dari 2 SELECT
pernyataan sql dalam satu pernyataan? Saya memiliki basis data tugas di mana setiap catatan adalah tugas yang terpisah, dengan tenggat waktu (dan PALT
, yang hanya beberapa INT
hari dari awal hingga tenggat waktu. Age
Juga merupakan INT
beberapa hari.)
Saya ingin memiliki tabel yang memiliki masing-masing orang dalam tabel, jumlah tugas yang mereka miliki, dan jumlah LATE
tugas yang mereka miliki (jika ada.)
Saya bisa mendapatkan data ini dalam tabel terpisah dengan mudah, seperti:
SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ks
mengembalikan data seperti:
ks # Tasks
person1 7
person2 3
dan kemudian saya memiliki:
SELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks
yang mengembalikan:
ks # Late
person1 1
person2 1
Dan saya ingin bergabung dengan hasil dari dua select
pernyataan ini (oleh KS
)
Saya mencoba untuk menghindari menggunakan tabel temp, tetapi jika itu satu-satunya cara praktis untuk melakukan ini, saya ingin tahu lebih banyak tentang menggunakan tabel temp dalam mode ini.
Saya juga mencoba melakukan beberapa count()
baris yang memenuhi syarat, tetapi saya juga tidak tahu bagaimana melakukannya. Jika mungkin, itu akan berhasil juga.
Addendum: Maaf, saya ingin hasil saya memiliki kolom untuk KS
, Tasks
, danLate
KS # Tasks # Late
person1 7 1
person2 3 1
person3 2 0 (or null)
Selain itu, saya ingin seseorang muncul bahkan jika mereka tidak memiliki tugas terlambat.
SUM(CASE WHEN Age > Palt THEN 1 ELSE 0 END) Late
berfungsi dengan baik, terima kasih atas jawaban ini!
Dua pernyataan pilih juga berfungsi, menggunakan a LEFT JOIN
untuk bergabung juga berfungsi, dan saya mengerti sekarang bagaimana cara menggabungkan beberapa select
s dengan cara ini
Jawaban:
sumber
Coba sesuatu seperti ini:
sumber
Gunakan
UNION
:Atau
UNION ALL
jika Anda ingin duplikat:sumber
Jika Usia dan Palt adalah kolom dalam Tabel yang sama, Anda dapat menghitung (*) semua tugas dan menjumlahkan hanya tugas yang terlambat seperti ini:
sumber
Anda dapat menggunakan
UNION ALL
kata kunci untuk ini.Berikut adalah dokumentasi MSDN untuk melakukannya di T-SQL http://msdn.microsoft.com/en-us/library/ms180026.aspx
UNION ALL - menggabungkan set hasil
UNION - Melakukan sesuatu seperti Set Union dan tidak menampilkan nilai duplikat
Untuk perbedaannya dengan contoh: http://sql-plsql.blogspot.in/2010/05/difference-between-union-union-all-all.html
sumber