Cómo agregar una condición Case When a consulta

Tenemos una consulta formateada que trae el valor en un campo.queremos agregar una condición Case When si cumple con la condición que tiene valor el OverCode trae ese valor , si no se va al then y trae el valor que esta en la otra tabla . Si me pueden ayudar. Atento a sus comentarios

   SELECT 
case when "OverCode" >= '1'  then (select "OverCode" FROM OACT where AcctCode = "$[POR1.AcctCode]" )
else 
   (SELECT "U_DIMENSION1" from "@VK_LISTA1" where "U_COD1" = "$[POR1.U_USUARIO]" ) END

Tema editado por SidV; razones:

  • Título anterior: “Estimados si me pueden ayudar con esta”
    No es descriptivo del error, por favor, usemos títulos que expliquen de lo que se hablará en el debate.
  • Código sin formato, se editó el mensaje y se pasa formato al código pegado.
  • Nuevo título: “Cómo agregar una condición Case When a consulta”
  • Etiqueta agregada: sql ya que se habla de consultas SQL.

Por favor, ayudennos a mantener el orden y la organización del foro, todos formamos parte de esta comunidad. Si hay dudas, sobre cómo usar el foro, leer: Cómo usar el foro de Consultoria-SAP

Hola Armando, en mi humilde opinión tendrías que hacer un procedimiento ya que el CASE en SQL no se maneja así, saludos

Intenta así

SELECT
     CASE T0."OverCode" 
	   WHEN > = '1' THEN (SELECT SUBSTRING T0."OverCode"
	                        FROM OACT T0 
							WHERE T0."AcctCode" = $[POR1."AcctCode"])
                   ELSE (SELECT SUBSTRING T1."U_DIMENSION1" 
				            FROM "@VK_LISTA1" T1 
							WHERE T1."U_COD1" = $[POR1."U_USUARIO"]) END AS "ALGO"

estimado, me falla pero si esta revisando los campos. te envio codigo de la consulta…

SELECT 
     CASE when T0."OverCode" IS NOT NULL  THEN (SELECT T0."OverCode"
	                        FROM OACT T0 
							WHERE T0."AcctCode" = '10262003')
                   ELSE (SELECT  T1."U_DIMENSION1" 
				            FROM "@VK_LISTA1" T1 
							WHERE T1."U_COD1" = 'manager') END AS "OcrCode"

y da error en linea 7 col 46

Hola @Ing_Armando_P

Te falta un From, ya hice la prueba en SQL, cambié tu table definida por usuario por la OCRD ya que yo no tengo dicha tabla

SELECT 
  CASE WHEN  T0.OverCode IS NOT NULL THEN (SELECT T0.OverCode
                                                    FROM OACT T0
                                                        WHERE T0.AcctCode = '10262003')
                                            ELSE (SELECT T1.CardCode
                                                    FROM OCRD T1
                                                        WHERE T1.CardCode = 'C00001') END AS 'OcrCode'
	FROM OACT T0

Saludos.

1 me gusta

Gracias @pcarrasco me funciono muchas gracias

1 me gusta

Este tema se cerró automáticamente 91 días después de la última publicación. No se permiten nuevas respuestas.