Sql 两列合为一列,无并集
我有一张这样的桌子:Sql 两列合为一列,无并集,sql,select,Sql,Select,我有一张这样的桌子: id | start date | end date | 1 | 1.1.2018 | 2.1.2018 | 2 | 1.1.2018 | | 如何将两个it组合为: id | start date | end date | 1 |1.1.2018 | | 1 | |2.1.2018 | 2 | 1.1.2018 | | 有什么想法吗 tnx简单地将所有非空开始日
id | start date | end date |
1 | 1.1.2018 | 2.1.2018 |
2 | 1.1.2018 | |
如何将两个it组合为:
id | start date | end date |
1 |1.1.2018 | |
1 | |2.1.2018 |
2 | 1.1.2018 | |
有什么想法吗
tnx简单地
将所有非空开始日期和非空结束日期合并在单独的列中
select id, start_date, null as end_date
from tablename
where start_date is not null
union all
select id, null, end_date
from tablename
where end_date is not null
如果您想要特定的订单,请按照@TheImpler的建议,并在末尾添加一个orderby
子句:
order by id, coalesce(start_date, end_date)
其中,coalesce(开始日期,结束日期)
表示选择了非空值。提示:UNION ALL
。为什么不UNION
?每个开始日期或结束日期都需要一个单独的行,即使ID匹配:)示例数据没有重复的ID/日期。无论如何,做一个联盟。也许“按id订购”?非常感谢各位,周三会回到我的办公室,但看起来很有希望