Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Group By - Hasilkan beberapa kolom agregat dari satu kolom

Anda dapat melakukannya menggunakan subkueri berkorelasi seperti ini:

SELECT 
  Company, 
  Date, 
  (SELECT COUNT(*) FROM MyTable AS T1 
     WHERE T1.Flag='Y' AND T1.Company=T2.Company AND T1.Date=T2.Date) AS Count_Y,
  (SELECT COUNT(*) FROM MyTable AS T1 
     WHERE T1.Flag='N' AND T1.Company=T2.Company AND T1.Date=T2.Date) AS Count_N
FROM MyTable AS T2
GROUP BY Company, Date

Anda juga dapat melakukannya dengan lebih ringkas, tetapi mungkin dengan (bisa dibilang) kurang mudah dibaca menggunakan SUM trik:

SELECT 
  Company, 
  Date, 
  SUM(CASE WHEN Flag='Y' THEN 1 ELSE 0 END) AS Count_Y,
  SUM(CASE WHEN Flag='N' THEN 1 ELSE 0 END) AS Count_N,
FROM MyTable
GROUP BY Company, Date

Di Oracle/PLSQL, DECODE fungsi dapat digunakan untuk menggantikan CASE untuk yang lebih ringkas:

SELECT 
  Company, 
  Date, 
  SUM(DECODE(Flag,'Y',1,0)) AS Count_Y,
  SUM(DECODE(Flag,'N',1,0)) AS Count_N,
FROM MyTable
GROUP BY Company, Date


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CEILING() Contoh di SQL Server

  2. Jumlah minggu dan sebagian minggu antara dua hari dihitung salah

  3. ms-access:bagaimana cara melakukan permintaan yang benar?

  4. Buat tampilan di beberapa database

  5. Mencatat SEMUA Pertanyaan di Database SQL Server 2008 Express?