Consulta Formateada con tabla de usuario

sql
Etiquetas: #<Tag:0x00007f11486bbd80>

#1

Tengo problemas con una consulta formateada, Necesito jalar esta consulta una vez que seleccionen la hora y que ponga dependiendo la hora el turno al que pertenece, la consulta es la siguiente:

SELECT (CASE WHEN U_Hora BETWEEN 600 AND 1359 THEN 'PRIMERO'
WHEN U_Hora BETWEEN 1400 AND 2359 THEN 'SEGUNDO'
WHEN U_Hora BETWEEN 000 AND 559 THEN 'TERCERO' END) AS Turno
 FROM [@PROD_CAP_PISOL] WHERE   U_Hora = $[$0_U_G.25.0]

EL problema es que es una tabla de usuario y en la parte de Item, no aparece como normalmente se muestra en cualquier otro formulario de sap, en este caso el Item tiene el valor 0_U_G y no se si es por eso pero no jala la consulta.

Tambie intente de la siguiente manera:

SELECT (CASE WHEN U_Hora BETWEEN 600 AND 1359 THEN 'PRIMERO'
WHEN U_Hora BETWEEN 1400 AND 2359 THEN 'SEGUNDO'
WHEN U_Hora BETWEEN 000 AND 559 THEN 'TERCERO' END) AS Turno
 FROM [@PROD_CAP_PISOL] WHERE   U_Hora = $[@PROD_CAP_PISOL.U_Hora.0]

Pero tampoco funciona.

No se si alguien ha tenido este mismo problema y me pueda orientar para que funcione la consulta.

De antemano muchas gracias.

Saludos.


#2

Hola Alberth
En este parte debes colocar la tabla donde esta creado el campo de usuario que estas diligenciado.
ej: U_Hora = $[INV1.U_Hora.0]


#3

Muchas gracias por tu apoyo Andrés Ramírez.

EL problema en este ejemplo, es que se estaba tomando un campo de usuario para realizar la consulta formateada, y esto nunca lo había hecho antes. Pensé que tendría una forma diferente de declararse.

Al final lo logre hacer en la consulta formateada de la siguiente manera:

SELECT DISTINCT (CASE WHEN U_Hora BETWEEN 600 AND 1359 THEN ‘PRIMERO’
WHEN U_Hora BETWEEN 1400 AND 2359 THEN ‘SEGUNDO’
WHEN U_Hora BETWEEN 000 AND 559 THEN ‘TERCERO’ END) AS Turno
FROM [@PROD_CAP_PISOL] WHERE U_Hora = $[@PROD_CAP_PISOL.U_Hora]

Es decir sin el ultimo .0

Y desde el asistente de consultas de SAP pude hacer la prueba Poniendo la consulta y como parámetro N’la hora’, de la siguiente manera:

SELECT DISTINCT (CASE WHEN U_Hora BETWEEN 600 AND 1359 THEN ‘PRIMERO’
WHEN U_Hora BETWEEN 1400 AND 2359 THEN ‘SEGUNDO’
WHEN U_Hora BETWEEN 000 AND 559 THEN ‘TERCERO’ END) AS Turno
FROM [@PROD_CAP_PISOL] WHERE U_Hora = N’600’

Donde 600 corresponde a las 6:00AM.

Dando como resultado PRIMERO que es lo que se pretendía.

Muchas gracias por tu pronta respuesta y espero esta solución le ayude a alguien con el mismo problema