SOQL - 从具有多个日期列的行返回具有一个日期列的行

时间:2017-08-17 10:36:53

标签: mysql split row soql

问题

我有这个子表:

+------+------------+------------+
| Name |   Date_A   |   Date_B   | 
+------+------------+------------+
| John | 2017-08-13 | 2017-08-14 |
| Mary | 2017-08-12 | 2017-08-15 |
+------+------------+------------+

我想得到这个结果:

+------+------------+
| Name |    Date    |
+------+------------+
| Mary | 2017-08-12 |
| John | 2017-08-13 |
| John | 2017-08-14 |
| Mary | 2017-08-15 |
+------+------------+

研究

我现在已经搜索了几个小时,我所能找到的是复杂的行拆分功能或解决方案,将多行合并为一个,但这与我的问题完全相反。

我已经使用UNION ALL,GROUP BY,ORDER BY,CONNECT BY和INNER JOIN查找解决方案,但它们都不符合我的需求。

我确信解决方案很简单,但我找不到合适的查询!

注释

查询必须包含简单的soql,并且只调用一次数据库才能生效。

编辑:不幸的是,SOQL不支持UNION关键字:(

编辑:解决方案

使用SOQL似乎没有解决此问题的方法,但是要发出多个请求并手动合并结果。

使用SQL,我们只需要使用UNION(如下面的答案中所述),但现在不支持SOQL。

1 个答案:

答案 0 :(得分:2)

一个选项使用UNION

SELECT Name, Date_A AS Date
FROM yourTable
UNION ALL
SELECT Name, Date_B
FROM yourTable

这里的技巧是将两个日期列(及其相关名称)叠加在一起。