Mysql 按列重新组织表数据
我有一个要从一个布局转换到另一个布局的数据列表。我不完全确定从一种布局转换到另一种布局的最佳方式。我曾想过一次刮一个“奶酪类型”,然后加入结果。我希望有一个更优雅的解决方案。以下是我得到的:Mysql 按列重新组织表数据,mysql,sql,pivot-table,Mysql,Sql,Pivot Table,我有一个要从一个布局转换到另一个布局的数据列表。我不完全确定从一种布局转换到另一种布局的最佳方式。我曾想过一次刮一个“奶酪类型”,然后加入结果。我希望有一个更优雅的解决方案。以下是我得到的: | BurgerType | CheeseType | Slices | |--------------|------------|--------| | Cheeseburger | Provolone | 2 | | Cheeseburger | Cheddar | 3
| BurgerType | CheeseType | Slices |
|--------------|------------|--------|
| Cheeseburger | Provolone | 2 |
| Cheeseburger | Cheddar | 3 |
| Cheeseburger | Bleu | 1 |
| Loosey | Provolone | 4 |
| Loosey | Cheddar | 4 |
| BlackBleu | Bleu | 2 |
| MONSTERNOM | Brie | 2 |
| MONSTERNOM | Cheddar | 1 |
我想把它转换成这样:
| BurgerType | Provolone | Cheddar | Bleu | Brie |
|--------------|-----------|---------|------|------|
| Cheeseburger | 2 | 3 | 1 | 0 |
| Loosey | 4 | 4 | 0 | 0 |
| BlackBleu | 0 | 0 | 2 | 2 |
| MONSTERNOM | 0 | 1 | 0 | 2 |
您可以使用条件聚合。
CASE
仅在奶酪类型匹配时返回切片计数,否则0
。然后,max()
获取返回的最大值,即这种奶酪和汉堡的切片数
SELECT burgertyp,
max(CASE
WHEN cheesetype = 'Provolone' THEN
slices
ELSE
0) provolone,
...
max(CASE
WHEN cheesetype = 'Brie' THEN
slices
ELSE
0) brie
FROM elbat
GROUP BY burgertype;
欢迎来到Stackoverflow!我相信您正在寻找一个
支点
。认真检查应用程序代码中数据显示的处理问题