mysql - 数据转换将一行转换为多行

标签 mysql

我确实有一个表格,其中的数据如下所示。

Table_A

Row Id    Date1        Date2        Date3
1         1/12/2008    2/12/2008    3/12/2008
2         2/12/2010    NULL          NULL
3         3/12/2008    4/12/2008     NULL

我需要编写一个 MySQL 查询来获得这样的结果

Row Id    App_Date     Date1          Date2         Date3
1         1/12/2008    1/12/2008      2/12/2008     3/12/2008
1         2/12/2008    1/12/2008      2/12/2008     3/12/2008
1         3/12/2008    1/12/2008      2/12/2008     3/12/2008
2         2/12/2010    2/12/2010      NULL          NULL
3         3/12/2008    3/12/2008      4/12/2008     NULL
3         4/12/2008    3/12/2008      4/12/2008     NULL

基本上,我想根据 Date1Date2Date3 填充新列 App_Date。如果任何日期字段有任何值。

然后我应该创建一条记录,并在该列中填充日期。例如,如果所有 3 个日期都填充在一条记录中,则该记录应该有 3 个记录,并且日期填充在新列 App_Date 中,如上所示。

实现这一目标的最佳 MySQL 查询是什么?

最佳答案

假设您的日期列数始终为 3,那么您可以编写一个 union 查询,如下所示:

select id, date1 as app_date, date1, date2, date3 from test
    where not isnull(date1)
union
select id, date2 as app_date, date1, date2, date3 from test
    where not isnull(date2)
union
select id, date3 as app_date, date1, date2, date3 from test
    where not isnull(date3)
order by id, app_date

关于mysql - 数据转换将一行转换为多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52064799/

相关文章:

java - 我在本地 MySQL 服务器上的主机名是什么?

mysql - 一张表两个字段的内连接

mysql - 与同一实体类型和表的多个一对多关系?

php - 带有连接的搜索查询在搜索字符串为空时显示所有行

php - cakephp中多个模型的单一分页

mysql - 将mysql数据库表中的目录路径替换为url路径

PHP PDO 无法更新

php - 使用 DBH 在 PHP 中循环 MySQL 查询

java - 为什么我的查询结果没有打印出来?

mysql - CONVERT_TZ 不起作用