Pivot

用更少的行簡化 SQL 表結果

  • March 7, 2018

我有一張桌子,上面有一些包含 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;

引用自:https://dba.stackexchange.com/questions/199631