Как сгруппировать и сохранить указанный столбец c - PullRequest
0 голосов
/ 02 мая 2020

Имея эту таблицу:

Number | Chapter |   Main  | Description  | value  
-------+---------+---------+--------------+--------  
1      |   1     |   false | description1 | 100  
1      |   1     |   false | description2 | 200  
1      |   1     |   true  | main desc.   | 0  
2      |   1     |   true  | main2        | 0
2      |   1     |   false | desc2        | 100

...

Мне нужно сгруппировать по номеру e Глава и сумма (значение), но мне нужно описание, когда Main = true (есть только 1 «Main» для каждой главы)

Ожидаемый результат:

Number | Chapter | Description | value  
-------+---------+-------------+--------  
1      |   1     | main desc.  | 300  
2      |   1     | main2       | 100 

Спасибо.

Ответы [ 2 ]

1 голос
/ 02 мая 2020

Вы можете использовать предложение CASE, чтобы найти нужное описание:

select
  number,
  chapter,
  max(case when main = 'true' then description end) as description,
  sum(value) as value
from t
group by number, chapter
1 голос
/ 02 мая 2020

Использовать условное агрегирование:

select number, chapter,
  max(case when main = 'true' then description end) description,
  sum(value) value
from tablename
group by number, chapter

Если тип данных столбца main равен boolean, то изменить на:

max(case when main then description end)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...