我确实有一个表格,其中的数据如下所示。
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
基本上,我想根据 Date1
、Date2
和 Date3
填充新列 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/