MYSQL GROUP BY с разными значениями в столбце - PullRequest
0 голосов
/ 30 июня 2019
b_id    r_id    charge          amt     status
--------------------------------------------------
1035    1025    Charge1         3       BILLED
1035    1025    Charge2         5       UNBILLED
1035    1025    Charge2         8       BILLED
1035    1025    Charge2         7       BILLED
1035    1025    Charge3         8       PAID
1036    1025    Charge1         9       BILLED
1036    1025    Charge3         7       PAID
1036    1025    Charge3         9       BILLED
1036    1025    Charge2         7       PAID

Выше приведены примеры данных, я хотел получить вывод, как показано ниже.

b_id    r_id    charge          SUM(amt)    status
--------------------------------------------------
1035    1025    Charge1         3           BILLED
1035    1025    Charge2         20          UNBILLED
1035    1025    Charge3         8           PAID
1036    1025    Charge1         9           BILLED
1036    1025    Charge3         16          BILLED
1036    1025    Charge2         7           PAID

То есть, я сделал группу по b_id, r_id, charge_id.Но для статуса последнего столбца, значение, которое я хочу, даже если одна из записей UNBILLED, последний столбец должен быть неоплаченным. Если все записи оплачены, то покажите оплаченный в запросе qroup, иначе покажите выставленный счет

Ответы [ 2 ]

1 голос
/ 30 июня 2019

Вы, кажется, хотите агрегировать с условной логикой:

select b_id, r_id, charge,       
       sum(amt),
       (case when sum(status = 'UNBILLED') > 0 then 'UNBILLED'
             when sum(status = 'BILLED') > 0 then 'BILLED'
             when sum(status = 'PAID') > 0 then 'PAID'
        end) as status       
from t
group by b_id, r_id, charge;
0 голосов
/ 30 июня 2019

кажется, вам нужен конкретный заказ на статус
Вы можете использовать заказ по полю

    select b_id , r_id , charge , sum(amt),  status 
    from  my_table  
    group by b_id , r_id , charge ,  status 
    order by b_id , r_id , charge , field(status ,'BILLED','UNBILLED', 'PAID')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...