sql >> Databasteknik >  >> RDS >> Oracle

SQL - alternativ till MED ... AS

Använd bara villkorlig aggregering:

SELECT SUM(CASE WHEN STATUS = 'A' THEN 1 ELSE 0 END) AS A_COUNT ,
       SUM(CASE WHEN STATUS = 'B' THEN 1 ELSE 0 END) AS B_COUNT ,
       SUM(CASE WHEN STATUS = 'C' THEN 1 ELSE 0 END) AS C_COUNT ,
       SUM(CASE WHEN STATUS = 'D' THEN 1 ELSE 0 END) AS D_COUNT ,
       SUM(CASE WHEN STATUS = 'E' THEN 1 ELSE 0 END) AS E_COUNT ,
       SUM(CASE WHEN STATUS = 'F' THEN 1 ELSE 0 END) AS F_COUNT 
FROM XYZ ;

Jag bör påpeka att det är ännu lättare att sätta värdena på separata rader:

select status, count(*)
from xyz
group by status;


  1. C# - Oväntad autentiseringsmetod mysql_native_password undantag

  2. Finns det någon skillnad mellan DATE_SUB() och att använda aritmetiska operatorer för beräkning av datum och tid?

  3. Ytterligare ett argument för lagrade procedurer

  4. Hur returnerar man data som hämtats från MySQL till en php-fil som JSON?