SQL объединяет несколько строк в одну строку при совпадении значения [закрыто]

я хочу объединить несколько строк данных, которые будут отображаться в виде одной строки.

ИЗ ЭТОГО:

ID контракта ID группы контрактов Количество
140 189 90.00
140 190 85.00
140 191 300.00
151 190 10.00
152 189 200.00
152 191 50.00

К ЭТОМУ:

ID контракта Группа 189 Группа 190 Группа 191 Итого
140 90.00 85.00 300.00 475,00
151 00.00 10.00 00.00 10.00
152 200.00 00.00 50.00 50.00

Любые предложения приветствуются.

Спасибо.

# pivot aggregate-functions sum
Источник
Codelisting
за 2 против
Лучший ответ

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

select contractid,
    max(case when contractgroupid = 189 then amount else 0 end) as group_189,
    max(case when contractgroupid = 190 then amount else 0 end) as group_190,
    max(case when contractgroupid = 191 then amount else 0 end) as group_191,
    max(case when contractgroupid = 192 then amount else 0 end) as group_192,
    sum(amount) as total_amount
from mytable
group by contractid

Если одна и та же группа может появляться более одного раза для данного контракта, вы можете использоватьsum() вместо тогоmax() .

Codelisting
Популярные категории
На заметку программисту