2017-08-17 96 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,會引發錯誤,說它不可用。 –

相關問題