2017-08-17 65 views
1

问题

我有这样的子表: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 | 
+------+------------+ 

研究

I'v我一直在寻找几个小时,所有我能找到的是复杂的行拆分功能或解决方案将多行合并成一个,但这与我的问题完全相反。

我已经研究过使用UNION ALL,GROUP BY,ORDER BY,CONNECT BY和INNER JOIN的解决方案,但没有一个符合我的需求。

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


查询必须包含简单SOQL只有调用数据库一次为它工作。

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


编辑:解

似乎有使用SOQL反而使多个请求并手动对这个问题无解合并的结果。

通过SQL,我们将只需要使用UNION(如下面的答案),但这不是由SOQL现在支持。

+0

select name,date_a as date date from table_name union select name,date_b as date from table_name; – tibetty

回答

2

一种选择使用UNION

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

这里的关键是要相互叠放的两个日期列(及其相关的名称)。

+0

这与传统的SQL完美结合。不幸的是,我忘了确切它是sOql而不是sql,这意味着我不能使用UNION ...... :( –

+0

你确定吗?大多数框架通常允许执行原始查询。如果不是这样,我会感到惊讶可能 –

+0

我与Salesforce一起工作,我可以使用SOQL执行一个原始查询,如果我使用UNION,会引发错误,说它不可用。 –

相关问题