如何为此类输出/问题创建mysql语法

如何为此类输出/问题创建mysql语法,mysql,sql,Mysql,Sql,我在创建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

我在创建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

当表达式

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

可以在同一个表上使用联接

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'
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)

一个LAN值可以有多个DR值,还是多个CR值?