mysql - 使用查询中给定的行数生成 SQL 查询

标签 mysql sql pivot

我需要使用列顺序表将表转换为给定的输出表。 仅使用 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

参见db-fiddle

关于mysql - 使用查询中给定的行数生成 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59120964/

相关文章:

php - 尝试在 MySQL INNER JOIN 中使用变量

mysql - 在 mysql 中存储确切持续时间的最佳方法

mysql - SQL 查询查找拥有未发布应用程序的用户

c# - 我有一个表,它有一个由三列组成的主键。我如何索引这个表?

MySQL 在连接时设置一个变量

sql-server - 在 SQL Server 中将列透视为行

python - Pandas Pivot 重复索引行

mysql - 使用参数访问查询区分列

从表中获取特定行时,Java JDBC 程序抛出 SQL 语法错误

mysql - mysql中行到列的转换