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