sql >> Databáze >  >> RDS >> Oracle

SQL - alternativa k WITH ... AS

Stačí použít podmíněnou agregaci:

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 ;

Měl bych zdůraznit, že uvedení hodnot na samostatné řádky je ještě jednodušší:

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


  1. Časové pásmo Mysql na Windows 7 není aktualizováno

  2. Analog funkce ORACLE MONTHS_BETWEEN v Javě

  3. WordPress WorkFlow Modifikace

  4. Přidat den k časovému razítku