Consulta SAPHana, almacenar datos en 1 campo

hana
Etiquetas: #<Tag:0x00007f6522aa79e8>

#1

Buenas tardes compañeros, tengo una vista en SAP Hana donde requiero almacenar las ordenes de compra en un solo campo, pero no se como hacerlo. Este es el codigo de la consulta donde se listan todas las ordenes de compra.


SELECT DISTINCT 

	 T0."DocNum" AS "NumDoc",
	 T8."SeriesName" AS "serie",
	 IFNULL(T10."CardName",
	 ' ') AS "transportador",
	 T0."U_Placa" AS "placa",
	 IFNULL(CAST(T0."U_NomConductor"AS VARCHAR(250)),
	 ' ') AS "conductor",
	 T4."DocNum" AS "pedido",
	 T2."DocNum" AS "remision",
	 T6."SlpName" AS "vendedor",

	 CASE WHEN T4."NumAtCard" IS NULL 
		THEN T0."NumAtCard" 
		ELSE T4."NumAtCard" 
		END AS "oc_Cliente",


	 IFNULL(T13."CardFName",' ') AS "establecimiento",
	 T0."CardCode" AS "codCliente",
	 T7."PymntGroup" AS "Cond_Pago",
	 CAST (T0."DiscPrcnt" as decimal(18,2)) AS "PorcDesPieFactura",
	 IFNULL(T0."Address",' ') AS "DireccionIaf" 


		FROM OINV T0 
		INNER JOIN INV1 T1 ON T0."DocEntry" = T1."DocEntry" 
		LEFT JOIN ODLN T2 ON T1."BaseType" = T2."ObjType" 
		AND T1."BaseRef" = T2."Ref1" 
		LEFT JOIN DLN1 T3 ON T2."DocEntry" = T3."DocEntry" 
		AND T3."TargetType" = T0."ObjType" 
		LEFT JOIN ORDR T4 ON T3."BaseType" = T4."ObjType" 
		AND T3."BaseRef" = T4."Ref1" 
		LEFT JOIN RDR1 T5 ON T2."DocEntry" = T3."DocEntry" 
		AND T2."ObjType" = T5."TargetType" 
		AND T5."TrgetEntry" = T2."DocEntry" 
		INNER JOIN OSLP T6 ON T0."SlpCode" = T6."SlpCode" 
		INNER JOIN OCTG T7 ON T0."GroupNum" = T7."GroupNum" 
		INNER JOIN NNM1 T8 ON T0."Series" = T8."Series" 
		AND T0."ObjType" = T8."ObjectCode" 
		LEFT JOIN OSHP T9 ON T0."TrnspCode" = T9."TrnspCode" 
		LEFT JOIN OCRD T10 ON T0."U_Cod_SN" = T10."CardCode" 
		INNER JOIN OITM T11 ON T1."ItemCode" = T11."ItemCode" 
		INNER JOIN OUSR T12 ON T0."UserSign" = T12."USERID" 
		INNER JOIN OCRD T13 ON T0."CardCode" = T13."CardCode" 
		LEFT JOIN "@CSS_SERIE_RESOL" T14 ON T8."SeriesName" = T14."U_CSS_SERIE" 
		WHERE  T0."DocNum" = 10000766
		

	 GROUP BY 
	 T0."DocNum",
	 T8."SeriesName",
	 T10."CardName",
	 T0."U_Placa",
	 CAST(T0."U_NomConductor"AS VARCHAR(250)) ,
	 T0."NumAtCard",
	 T2."DocNum",
	 T4."DocNum" ,
	 T6."SlpName",
	 T4."NumAtCard",
	 T13."CardFName" ,
	 T0."CardCode",
	 T7."PymntGroup",
	 T0."DiscPrcnt",
	 T0."Address"

El resultado es este en Query manager:

remisiones

La idea es que las ordenes de compra se muestren en un solo campo


#2

Hola @camilog
Si nos compartes la imagen incluyendo el campo que necesitas y nos muestras en excel como debería quedar seria mas fácil apoyarte.

Saludos,
Andres Ramirez Jaramillo :colombia:


#3

Hola @camilog has utilizado la función STRING_AGG??
Lo que hace esa función es traer en un mismo campo varios registros encontrados con un separador que tú le indicas, te paso una imagen del ejemplo a ver si te sirve.
IMG2


#4

Cordial saludo Jhozz, funcionó perfectamente, los campos que quería en una sola columna.

Aunque sucede algo particular y es que los números de pedido y remisión se repiten, lo ideal es que fueran únicos, sabes como se podría lograr esto?

El problema se ve en la siguiente imagen, para pedido solo debería mostrar 1 ves el numero 21323 y para remisión el 2003107


#5

Actualmente los valores que trae son de la siguiente manera:

Para lograr lo que quieres debes filtrar los resultados en el FROM, yo lo hice de la siguiente forma:

Espero te sirva.


#6