Il pourrait ne pas être ce que vous cherchez, mais je l'ai eu de la chance dans le passé avec des constructions comme ceci:
SELECT MAX(DECODE(fookey, 1, foo, NULL))
|| MAX(DECODE(fookey, 2, foo, NULL))
|| MAX(DECODE(fookey, 3, foo, NULL))
|| MAX(DECODE(fookey, 4, foo, NULL))
, groupingvalue
FROM mytable
GROUP BY groupingvalue;
Il est indépendant de la plateforme, et il fonctionne bien lorsque vous avoir un nombre arbitraire, mais limité de valeurs pour foo, et ils sont basés sur une autre valeur clé.Par exemple, si vous avez une table de factures et que vous voulez voir toutes les lignes de la facture sur une seule ligne concaténée et que vous avez une limite supérieure de 5 lignes, cela ressemblera à ceci:
SELECT MAX(DECODE(lineno, 1, foo, NULL))
|| ', '
|| MAX(DECODE(lineno, 2, foo, NULL))
|| ', '
|| MAX(DECODE(lineno, 3, foo, NULL))
|| ', '
|| MAX(DECODE(lineno, 4, foo, NULL))
|| ', '
|| MAX(DECODE(lineno, 5, foo, NULL))
, invoiceid
FROM lineitem
GROUP BY invoiceid;
Quel serveur utilisez-vous? Je doute qu'il existe une méthode SQL générique pour le faire, mais il existe certainement des méthodes spécifiques à l'implémentation. –
J'utilise Oracle. Je suis étonné qu'il n'y ait pas de moyen facile de le faire en oracle. – paweloque