我确实有一个表格,其中包含如下所示的数据。
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查询是什么?
答案 0 :(得分:0)
假设您的日期列数始终为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