cancel
Showing results for 
Search instead for 
Did you mean: 

Concatenar varios registros en una línea (SAP BO 9.0)

Former Member
0 Kudos

Buenas tardes,

Necesito su ayuda con un procedimiento que consideré simple, pero me está quitando la paciencia. El objetivo es generar una consulta que muestre las distintas marcas de los productos detallados en una factura.

El query con el que estoy trabajando es el siguiente:

SELECT

DISTINCT T3."FirmName" As "Marca"

FROM

OINV T0  /*FACTURAS*/

INNER JOIN INV1 T1 ON T0."DocEntry" = T1."DocEntry"  /*LINEAS FACTURAS*/

INNER JOIN OITM T2 ON T1."ItemCode" = T2."ItemCode" /*PRODUCTOS*/

INNER JOIN OMRC T3 ON T2."FirmCode" = T3."FirmCode" /*NOMBRES MARCA*/

WHERE

T0."DocNum" = 2000330

Y este es el resultado:

Lo que necesito es que quede de la siguiente manera:

(SELECT 'JOHNSON ROSE' || ', ' || 'CONCASSE' AS "Marca" FROM DUMMY)

Serían tan amables de indicarme cuál es el procedimiento correcto por favor.

Saludos,

Alejandro Soto.

Accepted Solutions (0)

Answers (1)

Answers (1)

felipe_loyolarodriguez
Active Contributor
0 Kudos

Buenas tardes

Prueba lo siguiente


DECLARE @pvt_table NVARCHAR(MAX)

SELECT distinct @pvt_table = COALESCE(@pvt_table + ',' + T3.FirmName + '', '' + T3.FirmName + '')

FROM

OINV T0  /*FACTURAS*/

INNER JOIN INV1 T1 ON T0."DocEntry" = T1."DocEntry"  /*LINEAS FACTURAS*/

INNER JOIN OITM T2 ON T1."ItemCode" = T2."ItemCode" /*PRODUCTOS*/

INNER JOIN OMRC T3 ON T2."FirmCode" = T3."FirmCode" /*NOMBRES MARCA*/

WHERE T0.DocNum = (select max(docnum) from OINV)

SELECT @pvt_table

Saludos

Former Member
0 Kudos

Buenas tardes Felipe, gracias por tu respuesta.

Ajuste la información y dejé el query de la siguiente manera para generar resultado en SAP:

DECLARE pvt_table NVARCHAR(200);

SELECT

COALESCE(:pvt_table || ',' || T3."FirmName" || '', '' || T3."FirmName" || '')

INTO pvt_table

FROM

OINV T0  /*FACTURAS*/

INNER JOIN INV1 T1 ON T0."DocEntry" = T1."DocEntry"  /*LINEAS FACTURAS*/

INNER JOIN OITM T2 ON T1."ItemCode" = T2."ItemCode" /*PRODUCTOS*/

INNER JOIN OMRC T3 ON T2."FirmCode" = T3."FirmCode" /*NOMBRES MARCA*/

WHERE

T0."DocNum" = 2000330;

Lo cual me genera el siguiente error:

Para verificar removí la línea de INTO pvt_table y genera tres registros, no sé si cambié la esencia del query al ajustarlo, pero sigo sin obtener el resultado que necesito.

felipe_loyolarodriguez
Active Contributor
0 Kudos

Buenas, que motor de base de datos usas?

Atte.

Former Member
0 Kudos

Es Hana.

Te comento que con un compañero encontré una solución alterna para concatenar varios registros en un línea, te la dejo:

felipe_loyolarodriguez
Active Contributor
0 Kudos

Con razón no reconocía la sintaxis.

Aun no he tenido la oportunidad de tener un proyecto con Hana.

Saludos

Former Member
0 Kudos

Es todo un reto, aunque la sintaxis es un completo dolor de cabeza de vez en cuando.