mysql—将一行转换为多行的数据转换

46scxncf  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(330)

我有一张表,上面有如下所示的数据。

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

基本上我想填充一个新的列 App_Date 基于 Date1 , Date2 以及 Date3 . 如果任何日期字段有任何值。
然后我应该创建一个记录,在该列中填充日期。例如,如果一个记录中填充了所有的3个日期,那么我应该有3个记录,其中一个记录的日期填充在新列中 App_Date 就像上面一样。
实现这一点的最佳mysql查询是什么?

jvidinwx

jvidinwx1#

假设您的日期列数总是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

相关问题