SQL: преобразовать элементы столбца в новые поля - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть следующее table1:

FieldA      FieldB  FieldC
--------------------------
mario       carta        5
mario       plastica     5
francesco   plastica    10
mario       plastica     5
giovanni    carta        2

И я хотел бы получить следующее table2 с запросом SQL:

FieldA   carta    plastica
--------------------------
mario       5           10
francesco   0           10
giovanni    2            0

Это означает, что каждый элементFieldB должен быть преобразован в новое поле table2. Тогда элемент новых полей должен быть суммой FieldC, но я знаю, как это сделать.

Вопрос в том, как преобразовать элементы FieldB в новые поля в другой таблице.

1 Ответ

2 голосов
/ 08 ноября 2019

Вы можете использовать условное агрегирование:

SELECT FieldA,
       SUM(CASE WHEN FieldB = 'carta' THEN FieldC ELSE 0 END) AS carta,
       SUM(CASE WHEN FieldB = 'plastica' THEN FieldC ELSE 0 END) AS plastica
FROM table1
GROUP BY FieldA

Этот запрос будет работать на Oracle , MySQL , PostgreSQL и SQL Server и большинство других вариантов ...

...