Pivot
用更少的行簡化 SQL 表結果
我有一張桌子,上面有一些包含 3 項運動的名稱。如果該人從事這項運動,則顯示“1”,否則顯示“0”。
如何使用 SQL 更改表,使其僅顯示每人一行,如下所示:
Regads,埃利奧·費爾南德斯
這稱為聚合查詢。有關您可以使用的各種聚合的詳細資訊,請參閱MySQL 開發頁面。
此查詢將返回每項運動的總和,對於 each
Name
。SELECT Name , SUM(Football) AS Football , SUM(Darts) AS Darts , SUM(Diving) AS Diving FROM mytable GROUP BY Name;
有關工作範例,請參閱此 SQL Fiddle 。
PostgreSQL,
bool_or
為此提供支持,(SUM
也可以,但速度較慢)CREATE TABLE foo(name,darts,nakedtwister) AS VALUES ('Evan', false, true), ('Jane', false, true), ('Andrew',true, false), ('Mary', true, true); SELECT name, bool_or(darts) AS darts, bool_or(nakedtwister) AS fun, 'NOT A REAL SPORT' AS "golf/terrorism" FROM foo GROUP BY name;