L'implémentation de la fonction STRAGG renvoie un résultat en tant que valeur de colonne unique. L'implémentation pour Oracle semble assez générique et peut être consommée pour différentes tables (et relations). Un comportement similaire peut-il être obtenu pour SQL Server. Une recherche sur le Web semble renvoyer uniquement des implémentations codées en dur et non génériques. Avons-nous une solution connue pour le serveur Sql?Existe-t-il une implémentation de la fonction STRAGG de Tom Kyte supportant SQL Server?
Répondre
Il existe une bonne solution XML qui est largement utilisée. C'est plus simple si les chaînes que vous agrégez n'ont pas de chaînes XML-invalides ou XML-spéciales, et voici un exemple.
SELECT *
FROM
(
SELECT x AS [data()]
FROM
(
SELECT 'something'
UNION ALL
SELECT 'something else'
UNION ALL
SELECT 'something & something'
) y (x)
FOR XML PATH('')
) z (final)
Cet exemple est de poste de Tony Rogerson à http://sqlblogcasts.com/blogs/tonyrogerson/archive/2006/07/06/871.aspx
Vous pouvez faire beaucoup plus que cet exemple simple montre. Vous pouvez spécifier l'ordre des éléments dans les agrégats (mettre ORDER BY dans la table dérivée), vous pouvez grouper et joindre pour obtenir plus d'une ligne de résultat, vous pouvez changer les délimiteurs, etc. Voici quelques autres liens sur cette technique:
Anith Sen a fait ce que je pense est la réponse la plus complète à cette question pour SQL Server dans son article http://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/ Concaténation Row Valeurs dans Transact-SQL 31 juillet 2008. Vous verrez qu'il y a un certain nombre de techniques différentes pour le faire mais je pense que l'astuce XML est la plus rapide. Avant SQL Server 2005, nous avons utilisé des variantes de l'astuce UPDATE que je montre comme un commentaire dans l'article.
- 1. Fonction de tri personnalisée - de SQL Server
- 2. Implémentation de l'arbre parent (ou du digraphe) de SQL Server SQL Server 2005
- 3. Implémentation .NET de la fonction Excel Yield
- 4. fonction de partition dans SQL Server 2005
- 5. Fonction de filtre d'index SQL Server 2005
- 6. MS SQL Server COLUMNS_UPDATED() Fonction
- 7. Implémentation d'un SQL Server 2008 fonction définie par l'utilisateur dans le code managé pour géocodage
- 8. SQL Server AVG fonction bizarrement
- 9. Fonction DECODE() dans SQL Server
- 10. ACCESS Jet SQL INT() Fonction -> Fonction SQL Server
- 11. Implémentation de la fonction de recherche sur jqgrid?
- 12. SQL Server 2000 Fonction de création de date/heure
- 13. IDE supportant WAS
- 14. Fonction ContainsTable de SQL Server Full text Problème de classement
- 15. SQL Server 2005: Recherche/accès à la valeur de (currentrow-N) et implémentation d'une formule?
- 16. héritage java en fonction de la composition (implémentation d'une pile)
- 17. Implémentation du commentaire le plus récent - SQL Server
- 18. Implémentation de la fonction IRR d'Excel et VB
- 19. Comment tester une fonction table dans SQL Server Management Studio?
- 20. Sql Server équivalent d'une fonction d'agrégation COUNTIF
- 21. Implémentation de la file d'attente
- 22. Retourne le type nullable dans la fonction SQL Server
- 23. Fonction de type Implode dans SQL Server 2000?
- 24. SQL Server SP, fonction, Afficher le compteur de lignes source
- 25. Bogue de SQL Server?
- 26. Implémentation d'un délai sur une fonction renvoyant une valeur
- 27. Est-ce une implémentation raisonnable de la fonction de Bézier quadratique dans OCaml?
- 28. Fonction pour trouver la correspondance exacte dans Microsoft SQL Server
- 29. supportant l'iPhone 2.2.1
- 30. Est-il possible dans SQL Server de créer une fonction pouvant gérer une séquence?
duplication possible de [ListAGG dans SQLSERVER] (http://stackoverflow.com/questions/15477743/listagg-in-sqlserver) – Veverke