Mysql извлекает записи на основе нескольких обращений

#mysql #database

#mysql #База данных

Вопрос:

У меня есть таблица merchant_credit_history, в которой я храню торговый кредит, дебет и тип транзакции.

Я хочу СУММИРОВАТЬ КРЕДИТ или ДЕБЕТ в зависимости от типа транзакции.

Записи

введите описание изображения здесь

Я попробовал это :

ВЫБЕРИТЕ SUM(ABS(debit)) как dealer_credit ИЗ merchant_credits_history, ГДЕ transaction_type=’premium_debit’ и merchant_id=’x’

ОБЪЕДИНЕНИЕ

ВЫБЕРИТЕ SUM(ABS(credit)) как dealer_margin_earned ИЗ merchant_credits_history, ГДЕ transaction_type=’margin_credit’ и merchant_id=’x’

и получение вывода в виде

введите описание изображения здесь

Я был бы признателен, если бы у меня был лучший запрос, а также значения в отдельной паре ключ-значение

Ответ №1:

 SELECT 
    SUM(CASE(WHEN transaction_type='premium_debit') THEN debit ELSE 0)) as dealer_credit, 
    SUM(CASE(WHEN transaction_type='margin_credit') THEN credit ELSE 0)) as dealer_margin_earned 
    FROM merchant_credits_history 
    WHERE merchant_id='x';
  

Таким образом, вы получаете пару значений credit, debit для каждого merchant_id.

Ответ №2:

 SELECT SUM(Debit), SUM(CREDIT) FROM 
   (SELECT 
      CASE WHEN transaction_type='premium_debit' THEN debit ELSE 0 END as Debit, 
      CASE WHEN transaction_type='margin_credit' THEN credit ELSE 0 END as Credit
   FROM Customers WHERE merchant_id='x')
  

Ответ №3:

Попробуйте это:

 SELECT SUM(ABS(credit)) as Credit, SUM(ABS(debit)) AS Debit, 
transaction_type FROM merchant_credits_history merchant_id='x'
GROUP BY (transaction_type);