¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo agregar valores de manera ordenada en SQL con STRING_AGG sin errores de sintaxis.

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 13 Vistas
0
Cargando...

hola Expertos,

Mi requerimiento es agregar los valores de manera ordenada como se muestra a continuación.

tapas_pradhan_2-1709698695344.png

actualmente el código es el siguiente.

FUNCTION .cs.I072-SB_Reporting.BUSINESSLOGIC.TABLE_FUNCTION::TF_SB_EFF_MSN_CONCAT" ( )
DEVUELVE TABLA(
"SB_NUMBER" NVARCHAR(10),
"MSN_LIST" NVARCHAR(5000),
"MSN_COUNT" INTEGER
)
LENGUAJE SQLSCRIPT
SEGURIDAD SQL INVOKER COMO
BEGIN
/*********************************
Fusionar todos los estados activos en una sola celda
**********************************/

return SELECT "SB_NUMBER",
STRING_AGG("MSN",',') AS "MSN_LIST" ,
COUNT("MSN") AS "MSN_COUNT"
FROM
(
SELECT DISTINCT
"SB_NUMBER",
CONCAT('X', lpad("MSN",5,'0')) AS "MSN"
FROM "INTERNAL_1S79"."class-Reporting.TABLEDEF::EFF.ZT_EFFECT_MSN_SB" as "ZT_EFFECT_MSN_SB"
LEFT OUTER JOIN "_SYS_BIC"."class-Reporting.BASE/CV_XCS_ZDCI0T_SB_REVI" as "CV_XCS_ZDCI0T_SB_REVI"
ON "ZT_EFFECT_MSN_SB".SB_NUMBER = "CV_XCS_ZDCI0T_SB_REVI"."SB_NUM"
WHERE ( "MSN" NOT IN ('425', '441', '434', '444', '482', '484', '522', '523') AND "CV_XCS_ZDCI0T_SB_REVI"."AC_TYPE" = '2')
OR "CV_XCS_ZDCI0T_SB_REVI"."AC_TYPE" <> '2'
order by "MSN", "SB_NUMBER"
)

group by "SB_NUMBER"  ;
END;

Pero estoy obteniendo resultados como se muestra a continuación. La agregación de cadenas no está en orden.

tapas_pradhan_0-1709698495620.png

Quiero implementar una lógica similar que se muestra a continuación en la consola, pero estoy obteniendo un error al usar Order by con la función STRING_AGG.

tapas_pradhan_3-1709699288975.png

Aquí obtengo los valores correctos pero al intentar implementar el siguiente código en la función de tabla, obtengo un error que dice "Error de sintaxis. "order" es incorrecto o está mal ubicado."

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

1 Respuestas

0
Cargando...

Utilice

order by CONCAT('X', lpad("MSN",5,'0')), "SB_NUMBER"

en lugar de

order by "MSN", "SB_NUMBER"

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?