Voici un exemple de tableau pour illustrer mon problème:Comment exclure les doublons lors de l'assemblage d'une table avec elle-même
mysql> select * from test;
+----+--------------+--------+
| id | type | siteid |
+----+--------------+--------+
| 1 | First Visit | 100 |
| 2 | Second Visit | 100 |
| 3 | First Visit | 300 |
| 4 | First Visit | 400 |
| 5 | Second Visit | 500 |
| 6 | Second Visit | 600 |
+----+--------------+--------+
Je suis en train de se joindre à la table sur elle-même, pour tirer ensemble les lignes qui ont la même valeur siteid Voici ma tentative:
mysql> select * from test T1
-> LEFT OUTER JOIN test T2 on T1.siteid = T2.siteid and T1.id <> T2.id;
+----+--------------+--------+------+--------------+--------+
| id | type | siteid | id | type | siteid |
+----+--------------+--------+------+--------------+--------+
| 1 | First Visit | 100 | 2 | Second Visit | 100 |
| 2 | Second Visit | 100 | 1 | First Visit | 100 |
| 3 | First Visit | 300 | NULL | NULL | NULL |
| 4 | First Visit | 400 | NULL | NULL | NULL |
| 5 | Second Visit | 500 | NULL | NULL | NULL |
| 6 | Second Visit | 600 | NULL | NULL | NULL |
+----+--------------+--------+------+--------------+--------+
Ceci est fondamentalement le résultat que je recherche, sauf pour les 2 premières lignes. Je voudrais en éliminer un. Donc, j'ai essayé ce qui suit:
mysql> select * from test T1
-> LEFT OUTER JOIN test T2 on T1.siteid = T2.siteid and T1.id <> T2.id
-> GROUP BY T1.siteid;
+----+--------------+--------+------+--------------+--------+
| id | type | siteid | id | type | siteid |
+----+--------------+--------+------+--------------+--------+
| 1 | First Visit | 100 | 2 | Second Visit | 100 |
| 3 | First Visit | 300 | NULL | NULL | NULL |
| 4 | First Visit | 400 | NULL | NULL | NULL |
| 5 | Second Visit | 500 | NULL | NULL | NULL |
| 6 | Second Visit | 600 | NULL | NULL | NULL |
+----+--------------+--------+------+--------------+--------+
C'est exactement la sortie que je recherche. Cependant, je viens d'apprendre que ce n'est pas la manière standard d'utiliser GROUP BY, et l'instruction ci-dessus échoue sur ORACLE, ce qui me donne un
Erreur SQL générale.
ORA-00979: pas GROUP BY expression
Quelqu'un peut-il offrir une aide sur la façon d'obtenir les résultats comme la dernière table et qui fonctionne avec ORACLE?