traducir iif a case when...

25/04/2005 - 19:54 por Edmundo J. Davila | Informe spam
Hola amig@s:

Como hago para traducir con WHEN el siguiente IIF que tengo en una consulta
con ACCESS. He probado de mil formas y no lo he logrado, cualquier ayuda se
las agradeceria mucho.

Mil gracias de antemano.

Edmundo

En access esto funciona de maravilla, pero en SQL SERVER no existe el IIF:

SELECT EXACTUS.MONISA.EMPLEADO_CONC_NOMI.EMPLEADO,
EXACTUS.MONISA.EMPLEADO.NOMBRE,
Sum(IIf([EXACTUS.MONISA.CONCEPTO].[TIPO_CONCEPTO]='B',[EXACTUS.MONISA.EMPLEADO_CONC_NOMI].[TOTAL],-[EXACTUS.MONISA.EMPLEADO_CONC_NOMI].[TOTAL]))
AS TOTAL
FROM EXACTUS.MONISA.CONCEPTO INNER JOIN (EXACTUS.MONISA.EMPLEADO_CONC_NOMI
INNER JOIN EXACTUS.MONISA.EMPLEADO ON
EXACTUS.MONISA.EMPLEADO_CONC_NOMI.EMPLEADO =
EXACTUS.MONISA.EMPLEADO.EMPLEADO) ON EXACTUS.MONISA.CONCEPTO.CONCEPTO =
EXACTUS.MONISA.EMPLEADO_CONC_NOMI.CONCEPTO
WHERE (((EXACTUS.MONISA.EMPLEADO_CONC_NOMI.NOMINA)='PSEA') AND
((EXACTUS.MONISA.EMPLEADO_CONC_NOMI.NUMERO_NOMINA)€) AND
((EXACTUS.MONISA.EMPLEADO.FORMA_PAGO)='T') AND
((EXACTUS.MONISA.CONCEPTO.TIPO_CONCEPTO)='B' Or
(EXACTUS.MONISA.CONCEPTO.TIPO_CONCEPTO)='D'))
GROUP BY EXACTUS.MONISA.EMPLEADO_CONC_NOMI.EMPLEADO,
EXACTUS.MONISA.EMPLEADO.NOMBRE;

Una de las tantas formas que probe fue asi, pero no me funciono:

SELECT EXACTUS.MONISA.EMPLEADO_CONC_NOMI.EMPLEADO,
EXACTUS.MONISA.EMPLEADO.NOMBRE,
CASE EXACTUS.MONISA.CONCEPTO.TIPO_CONCEPTO

WHEN 'B' SUM(EXACTUS.MONISA.EMPLEADO_CONC_NOMI.TOTAL)
WHEN 'D' -SUM(EXACTUS.MONISA.EMPLEADO_CONC_NOMI.TOTAL)
AS NETO
FROM EXACTUS.MONISA.CONCEPTO INNER JOIN (EXACTUS.MONISA.EMPLEADO_CONC_NOMI
INNER JOIN EXACTUS.MONISA.EMPLEADO ON
EXACTUS.MONISA.EMPLEADO_CONC_NOMI.EMPLEADO =
EXACTUS.MONISA.EMPLEADO.EMPLEADO) ON EXACTUS.MONISA.CONCEPTO.CONCEPTO =
EXACTUS.MONISA.EMPLEADO_CONC_NOMI.CONCEPTO
WHERE (((EXACTUS.MONISA.EMPLEADO_CONC_NOMI.NOMINA)='PSEA') AND
((EXACTUS.MONISA.EMPLEADO_CONC_NOMI.NUMERO_NOMINA)€) AND
((EXACTUS.MONISA.EMPLEADO.FORMA_PAGO)='T') AND
((EXACTUS.MONISA.CONCEPTO.TIPO_CONCEPTO)='B' Or
(EXACTUS.MONISA.CONCEPTO.TIPO_CONCEPTO)='D'))
GROUP BY EXACTUS.MONISA.EMPLEADO_CONC_NOMI.EMPLEADO,
EXACTUS.MONISA.EMPLEADO.NOMBRE;
 

Leer las respuestas

#1 Alejandro Mesa
25/04/2005 - 18:56 | Informe spam
Trata:

...
Sum(
case
when [EXACTUS.MONISA.CONCEPTO].[TIPO_CONCEPTO]='B' then
[EXACTUS.MONISA.EMPLEADO_CONC_NOMI].[TOTAL]
else -1 * [EXACTUS.MONISA.EMPLEADO_CONC_NOMI].[TOTAL]
end
) AS TOTAL
...


AMB

"Edmundo J. Davila" wrote:

Hola :

Como hago para traducir con WHEN el siguiente IIF que tengo en una consulta
con ACCESS. He probado de mil formas y no lo he logrado, cualquier ayuda se
las agradeceria mucho.

Mil gracias de antemano.

Edmundo

En access esto funciona de maravilla, pero en SQL SERVER no existe el IIF:

SELECT EXACTUS.MONISA.EMPLEADO_CONC_NOMI.EMPLEADO,
EXACTUS.MONISA.EMPLEADO.NOMBRE,
Sum(IIf([EXACTUS.MONISA.CONCEPTO].[TIPO_CONCEPTO]='B',[EXACTUS.MONISA.EMPLEADO_CONC_NOMI].[TOTAL],-[EXACTUS.MONISA.EMPLEADO_CONC_NOMI].[TOTAL]))
AS TOTAL
FROM EXACTUS.MONISA.CONCEPTO INNER JOIN (EXACTUS.MONISA.EMPLEADO_CONC_NOMI
INNER JOIN EXACTUS.MONISA.EMPLEADO ON
EXACTUS.MONISA.EMPLEADO_CONC_NOMI.EMPLEADO =
EXACTUS.MONISA.EMPLEADO.EMPLEADO) ON EXACTUS.MONISA.CONCEPTO.CONCEPTO =
EXACTUS.MONISA.EMPLEADO_CONC_NOMI.CONCEPTO
WHERE (((EXACTUS.MONISA.EMPLEADO_CONC_NOMI.NOMINA)='PSEA') AND
((EXACTUS.MONISA.EMPLEADO_CONC_NOMI.NUMERO_NOMINA)€) AND
((EXACTUS.MONISA.EMPLEADO.FORMA_PAGO)='T') AND
((EXACTUS.MONISA.CONCEPTO.TIPO_CONCEPTO)='B' Or
(EXACTUS.MONISA.CONCEPTO.TIPO_CONCEPTO)='D'))
GROUP BY EXACTUS.MONISA.EMPLEADO_CONC_NOMI.EMPLEADO,
EXACTUS.MONISA.EMPLEADO.NOMBRE;

Una de las tantas formas que probe fue asi, pero no me funciono:

SELECT EXACTUS.MONISA.EMPLEADO_CONC_NOMI.EMPLEADO,
EXACTUS.MONISA.EMPLEADO.NOMBRE,
CASE EXACTUS.MONISA.CONCEPTO.TIPO_CONCEPTO

WHEN 'B' SUM(EXACTUS.MONISA.EMPLEADO_CONC_NOMI.TOTAL)
WHEN 'D' -SUM(EXACTUS.MONISA.EMPLEADO_CONC_NOMI.TOTAL)
AS NETO
FROM EXACTUS.MONISA.CONCEPTO INNER JOIN (EXACTUS.MONISA.EMPLEADO_CONC_NOMI
INNER JOIN EXACTUS.MONISA.EMPLEADO ON
EXACTUS.MONISA.EMPLEADO_CONC_NOMI.EMPLEADO =
EXACTUS.MONISA.EMPLEADO.EMPLEADO) ON EXACTUS.MONISA.CONCEPTO.CONCEPTO =
EXACTUS.MONISA.EMPLEADO_CONC_NOMI.CONCEPTO
WHERE (((EXACTUS.MONISA.EMPLEADO_CONC_NOMI.NOMINA)='PSEA') AND
((EXACTUS.MONISA.EMPLEADO_CONC_NOMI.NUMERO_NOMINA)€) AND
((EXACTUS.MONISA.EMPLEADO.FORMA_PAGO)='T') AND
((EXACTUS.MONISA.CONCEPTO.TIPO_CONCEPTO)='B' Or
(EXACTUS.MONISA.CONCEPTO.TIPO_CONCEPTO)='D'))
GROUP BY EXACTUS.MONISA.EMPLEADO_CONC_NOMI.EMPLEADO,
EXACTUS.MONISA.EMPLEADO.NOMBRE;





Preguntas similares