2017-08-17 6 views
1

Problème

J'ai cette table enfant:SOQL - Retour des lignes avec une colonne de date à partir de lignes avec plusieurs colonnes de date

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

Je voudrais obtenir ce résultat:

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

Recherche

Jev Je fais des recherches depuis quelques heures maintenant et tout ce que je peux trouver est une séparation de lignes compliquée avec des fonctions ou des solutions pour fusionner plusieurs lignes en une seule mais c'est l'opposé complet de mon problème.

J'ai déjà examiné des solutions en utilisant UNION ALL, GROUP BY, ORDER BY, CONNECT BY et INNER JOIN mais aucune d'entre elles ne répondait à mes besoins.

Je suis sûr que la solution est simple mais je ne trouve pas la bonne requête!


Notes de

La requête doit contenir SOQL simple et n'appeler une fois la base de données pour que cela fonctionne.

EDIT: Le mot-clé UNION est pas pris en charge par SOQL malheureusement :(


EDIT: Solution

Il semble qu'il n'y ait pas de solution à ce problème en utilisant SOQL mais de faire plusieurs demandes et manuellement fusionner les résultats.

Avec SQL, nous ne devons utiliser UNION (comme dans les réponses ci-dessous), mais ce n'est pas pris en charge par SOQL pour l'instant.

+0

Sélectionnez le nom, date_a comme date de table_name union sélectionnez le nom, date_b comme date de table_name; – tibetty

Répondre

2

Une option utilise un UNION:

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

L'astuce ici est d'empiler les uns sur les autres deux colonnes de date (avec leurs noms associés).

+0

Cela fonctionne parfaitement avec SQL classique. Malheureusement, j'ai oublié de préciser que c'était sOql et non sql, ce qui signifie que je ne peux pas utiliser UNION ... :( –

+0

Etes-vous certain de cela? La plupart des frameworks permettent généralement de faire une requête brute. –

+0

Je travaille avec Salesforce et je suis capable d'exécuter une requête brute en utilisant SOQL qui, si j'utilise UNION, jette une erreur en disant qu'elle n'est pas disponible –