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订购”?非常感谢各位,周三会回到我的办公室,但看起来很有希望