Как создать синтаксис mysql для такого рода вывода / проблемы - PullRequest
0 голосов
/ 11 июня 2019

У меня проблемы с созданием скрипта MySQL, у меня есть таблица с тремя столбцами.

LAN | TYPE | AMOUNT
1   | DR   | 100
1   | CR   | 200
2   | CR   | 200
3   | DR   | 500
3   | CR   | 700

Я хочу получить вывод

LAN | CR_TYPE_AMOUNT | DR_TYPE_AMOUNT
1   | 200            |  100
2   | 200            |      
3   | 700            |  500

Ответы [ 3 ]

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

вы можете использовать conditional aggregation с case when expression

select lan, 
       max(case when TYPE='CR' then amount end) as CR_TYPE_AMOUNT,
       max(case when TYPE='DR' then amount end) as DR_TYPE_AMOUNT
from tablename
group by lan
0 голосов
/ 11 июня 2019

SQL как показано ниже:

 select
     coalesce(a.lan, b.lan) as LAN,
     a.amount as CR_TYPE_AMOUNT,
     b.amount as DR_TYPE_AMOUNT
 from
 (select lan, amount from my_table_1 where type='CR') a
 left join
 (select lan, amount from my_table_1 where type='DR') b on a.lan = b.lan ;
+------+----------------+----------------+
| LAN  | CR_TYPE_AMOUNT | DR_TYPE_AMOUNT |
+------+----------------+----------------+
|    1 |            200 |            100 |
|    2 |            200 |           NULL |
|    3 |            700 |            500 |
+------+----------------+----------------+
3 rows in set (0.00 sec)
0 голосов
/ 11 июня 2019

Вы можете использовать соединение за одним столом

select  a.lan, a.amount DR_TYPE_AMOUNT, b.amount CR_TYPE_AMOUNT
from  my_table a  
left  join my_table b on a.lan = b.lan 
    and a.type='CR' 
      and b.type='DR'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...