Объедините несколько строк с одинаковыми значениями в одном столбце, но разные значения в других столбцах - PullRequest
0 голосов
/ 15 апреля 2020

Я использую SQL, пытаясь объединить таблицу, которая выглядит следующим образом:

+-----------------------------------+
| Name  | Cherries | Pears | Apples |
+-----------------------------------+
| User1 |    Yes   |   No  |   No   |
+-----------------------------------+
| User1 |    No    |   No  |   Yes  |
+-----------------------------------+
| User2 |    No    |   Yes |   No   |
+-----------------------------------+
| User2 |    No    |   No  |   Yes  |
+-----------------------------------+

В таблицу, которая выглядит следующим образом:

+-----------------------------------+
| Name  | Cherries | Pears | Apples |
+-----------------------------------+
| User1 |    Yes   |   No  |   Yes  |
+-----------------------------------+
| User2 |    No    |   Yes |   Yes  |
+-----------------------------------+

Я могу использовать GROUP BY чтобы сгруппировать их по Name, но я не знаю, как обращаться с другими столбцами.

1 Ответ

2 голосов
/ 15 апреля 2020

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

select
    name,
    max(cherries) cherries,
    max(pears)    pears,
    max(apples)   apples
from mytable
group by name

Это работает, потому что для строки 'Yes' больше 'No'. Таким образом, если оба значения присутствуют в группе, max() дает 'Yes'.

...