表結構:`poster_code`、`post_date`、`post_type`(1匿名/2實名)、`quantity`。需按日期+代碼分組,輸出匿名/實名總量。
SELECT
poster_code,
post_date,
SUM(CASE WHEN post_type = 1 THEN quantity ELSE 0 END) AS 匿名數量,
SUM(CASE WHEN post_type = 2 THEN quantity ELSE 0 END) AS 實名數量
FROM 表名
GROUP BY poster_code, post_date
ORDER BY post_date, poster_code;
| 資料庫 | 寫法差異 |
|---|---|
| MySQL | 同上,別名可不加引號 |
| SQL Server | 別名加方括號 `[匿名數量]` 或雙引號 |
| Oracle | `CASE post_type WHEN 1 THEN quantity ELSE 0 END` 簡潔寫法 |
| PostgreSQL | 同上,支援 `FILTER`:`SUM(quantity) FILTER (WHERE post_type=1)` |
若需一行顯示所有類型,可用 `PIVOT`(SQL Server/Oracle)或 `crosstab`(PostgreSQL),但 `CASE WHEN` 通用性最強、可移植。