我需要使用列顺序表将表转换为给定的输出表。 仅使用 SQL 是否可以实现这一点?
我在互联网上查找了答案,发现人们通常使用PIVOT
。但是,我的表的列数与列顺序行中的行数一样多。那么这可能吗?
非常感谢任何有关如何执行此操作的想法/提示。
我已经有了表(是的,它是按 A 排序的)
A B C
---------- ---------- ----------------------
1 1 74
1 2 95
2 1 78
2 2 10
2 3 33
列的顺序(我有另一个表)
B
-----
2
1
3
通缉表(按A排序)
A COLUMN 2 COLUMN 1 COLUMN 3
--------------------------------
1 95 74 0
2 10 78 33
最佳答案
正如其他人指出的那样,您需要列顺序表中的一列来表示顺序。假设该列是id
,那么您可以使用查询:
select t.A,
ifnull(max(if (o.id=1, t.c, null)),0),
ifnull(max(if (o.id=2, t.c, null)),0),
ifnull(max(if (o.id=3, t.c, null)),0)
from t
join t_order o on o.b=t.b
group by t.A
关于mysql - 使用查询中给定的行数生成 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59120964/