Almacenar resultado de Query en variables SBO Hana

Cordial saludo tengo una consulta para presupuestos, quiero almacenar el mes en una variable pero siempre me da error

El entorno es SAP Business One Hana

DECLARE NatDebito int;
DECLARE NatCredito int;
DECLARE ValPresupuesto int;

SELECT 

CASE WHEN 

T2."Account" = 51351005  THEN
	NatDebito = SUM(T2."Debit" - T2."Credit") ELSE 
	NatCredito = SUM(T2."Credit" - T2."Debit")
	END,

CASE 
WHEN MONTH(NOW())  = 1 THEN ValPresupuesto = T1."Month1"
WHEN MONTH(NOW())  = 2 THEN ValPresupuesto = T1."Month2"
WHEN MONTH(NOW())  = 3 THEN ValPresupuesto = T1."Month3"
WHEN MONTH(NOW())  = 4 THEN ValPresupuesto = T1."Month4"
WHEN MONTH(NOW())  = 5 THEN ValPresupuesto = T1."Month5"
WHEN MONTH(NOW())  = 6 THEN ValPresupuesto = T1."Month6"
WHEN MONTH(NOW())  = 7 THEN ValPresupuesto = T1."Month7"
WHEN MONTH(NOW())  = 8 THEN ValPresupuesto = T1."Month8"
WHEN MONTH(NOW())  = 9 THEN ValPresupuesto = T1."Month9"
WHEN MONTH(NOW())  = 10 THEN ValPresupuesto = T1."Month10"
WHEN MONTH(NOW())  = 11 THEN ValPresupuesto = T1."Month11"
WHEN MONTH(NOW())  = 12 THEN ValPresupuesto = T1."Month12"

END


FROM OACT T0 INNER JOIN  OBGD T1 ON T0."AcctCode" = SUBSTRING(T1."BgdName",2,8)
INNER JOIN JDT1 T2 ON T0."AcctCode" = T2."Account" 
INNER JOIN OJDT T3 ON T2."TransId" = T3."TransId" 


WHERE T2."Account" = 51351005
AND  MONTH(CAST (T2."RefDate" AS DATE)) =  MONTH(NOW())  
AND  YEAR( CAST(T2."RefDate" AS DATE) ) =  EXTRACT(YEAR FROM CURRENT_DATE)
AND T1."BgdName" LIKE 'M%'

GROUP BY  T2."Account",
T1."BgdName", T1."BgdTotal", T1."Month1", T1."Month2", T1."Month3", T1."Month4", T1."Month5", T1."Month6", T1."Month7", T1."Month8", T1."Month9", T1."Month10", T1."Month11", T1."Month12",T2."RefDate"

Puedes indicar el error que te sale?

error en la linea 13 cuando igualo la variable a el valor del mes

No se de Hana :slight_smile: ,pero en SQL después del END pongo un as

Hola @camilog

Cual es tu linea 13, ?? que numero de linea tiene tu valor “DECLARE NatDebito int;” para de ahí comenzar a contar 13 registros hacia abajo.

En hana no es necesario el declare y la asignación de variables se hace con un INTO

mas o menos así

 ValPresupuesto int;

CASE  WHEN MONTH(NOW())  = 1 THEN T1."Month1" INTO ValPresupuesto 

Espero sea de ayuda mi comentario.

Saludos

Hola @america el AS es para agregar un “alias” al resultado, funciona igual en HANA que en SQL, por ejemplo

Select 
T0."CardCode" as "Codigo SN"
From OCRD T0
-- O From OCRD AS T0

Saludos

1 me gusta

Cordial saludo, hice el cambio pero estoy teniendo este problema

Could not execute 'SELECT CASE WHEN T2."Account" = 51351005 THEN SUM(T2."Debit" - T2."Credit") ELSE SUM(T2."Credit" - ...'
SAP DBTech JDBC: [257]: sql syntax error: incorrect syntax near "INTO": line 7 col 41 (at pos 191)

Ya no se que mas cambiarle :confused:

NatDebito int;
NatCredito int;
ValPresupuesto int;

SELECT CASE WHEN T2."Account" = 51351005  THEN
	SUM(T2."Debit" - T2."Credit")   ELSE 
              SUM(T2."Credit" - T2."Debit") 
	END,

CASE 
WHEN MONTH(NOW())  = 1 THEN T1."Month1" INTO ValPresupuesto
WHEN MONTH(NOW())  = 2 THEN T1."Month2" INTO ValPresupuesto
WHEN MONTH(NOW())  = 3 THEN T1."Month3" INTO ValPresupuesto
WHEN MONTH(NOW())  = 4 THEN T1."Month4" INTO ValPresupuesto
WHEN MONTH(NOW())  = 5 THEN T1."Month5" INTO ValPresupuesto
WHEN MONTH(NOW())  = 6 THEN T1."Month6" INTO ValPresupuesto
WHEN MONTH(NOW())  = 7 THEN T1."Month7" INTO ValPresupuesto
WHEN MONTH(NOW())  = 8 THEN T1."Month8" INTO ValPresupuesto
WHEN MONTH(NOW())  = 9 THEN T1."Month9" INTO ValPresupuesto
WHEN MONTH(NOW())  = 10 THEN T1."Month10" INTO ValPresupuesto
WHEN MONTH(NOW())  = 11 THEN T1."Month11" INTO ValPresupuesto
WHEN MONTH(NOW())  = 12 THEN T1."Month12" INTO ValPresupuesto

END


FROM OACT T0 INNER JOIN  OBGD T1 ON T0."AcctCode" = SUBSTRING(T1."BgdName",2,8)
INNER JOIN JDT1 T2 ON T0."AcctCode" = T2."Account" 
INNER JOIN OJDT T3 ON T2."TransId" = T3."TransId" 


WHERE T2."Account" = 51351005
AND  MONTH(CAST (T2."RefDate" AS DATE)) =  MONTH(NOW())  
AND  YEAR( CAST(T2."RefDate" AS DATE) ) =  EXTRACT(YEAR FROM CURRENT_DATE)
AND T1."BgdName" LIKE 'M%'

GROUP BY  T2."Account",
 T1."Month1"

Este tema se cerró automáticamente 91 días después del último post. No se permiten nuevas respuestas.