SQL Server - Case: No puedo utilizar mas de 10 condiciones

   
Vista:

Case: No puedo utilizar mas de 10 condiciones

Publicado por Ana Pérez (6 intervenciones) el 25/07/2014 13:16:04
Hola chic@s:

A ver me podeis ayudar, necesito almacenar en un campo el nombre del banco, para luego poder agrupar. La información la tengo en un campo llamado PymMethNam. Habia pensado utilizar la función case tal y como pongo en el ejemplo adjunto. El problema es que si tengo más de 10 condiciones como es el caso de una de las base de datos que tengo que tratar, la función no me lo permite. Mi pregunta es que otra función puedo utilizar que no me limite la condición o de que otra forma puedo montar la consulta. Muchas gracias por anticipado. Saludos

select 'BF' AS EMPRESA, PmntDate as FechaContable, DueDate as Vto, BoeNum as Número, BoeStatus as Status ,BoeSum as Importe, CardCode as Código, CardName as Nombre,
CASE WHEN PymMethNam = 'PAGO CONFIRMING BANKINTER FRANCIA' THEN SUBSTRING(PymMethNam, 16, 10)
else CASE When PymMethNam = 'PAGO CONFIRMING BBVA FRANCIA' THEN SUBSTRING(PymMethNam, 16, 5)
else CASE When PymMethNam = 'PAGO CONFIRMING SANTANDER FRANCIA' THEN SUBSTRING(PymMethNam, 16, 11)
else CASE When PymMethNam = 'PAGO PAGARE BBVA FRANCIA' THEN SUBSTRING(PymMethNam, 12, 4)
else CASE When PymMethNam = 'PAGO PAGARE BANKINTER FRANCIA' THEN SUBSTRING(PymMethNam, 12, 10)
else CASE When PymMethNam = 'PAGO PAGARE SANTANDER FRANCIA' THEN SUBSTRING(PymMethNam, 12, 10)
else CASE when PymMethNam = 'PAGO CONFIRMING CAIXA' then (SUBSTRING(PymMethNam, 16, 6) + 'BG')
else CASE When PymMethNam = 'PAGO CONFIRMING SANTANDER' THEN (SUBSTRING(PymMethNam, 16, 10) + 'BG')
else CASE When PymMethNam = 'PAGO PAGARE CAIXA' THEN (SUBSTRING(PymMethNam, 12, 6) + 'BG') END END END END END END END END END as BANCO, PymMethNam
from SBO_PRUEBATFR.dbo.OBOE
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Case: No puedo utilizar mas de 10 condiciones

Publicado por Ana Pérez (6 intervenciones) el 25/07/2014 14:06:48
Hola,

Ya me he dado cuenta de que no tengo que definir distintas condiciones (es la misma). Adjunto el código de cómo queda la función. De todas formas muchísimas gracias.

select 'BF' AS EMPRESA, PmntDate as FechaContable, DueDate as Vto, BoeNum as Número, BoeStatus as Status ,BoeSum as Importe, CardCode as Código, CardName as Nombre,
CASE WHEN PymMethNam = 'PAGO CONFIRMING BANKINTER FRANCIA' THEN SUBSTRING(PymMethNam, 5, 11)
When PymMethNam = 'PAGO CONFIRMING BBVA FRANCIA' THEN SUBSTRING(PymMethNam, 5, 11)
When PymMethNam = 'PAGO CONFIRMING SANTANDER FRANCIA' THEN SUBSTRING(PymMethNam, 5, 11)
When PymMethNam = 'PAGO PAGARE BBVA FRANCIA' THEN SUBSTRING(PymMethNam, 5, 7)
When PymMethNam = 'PAGO PAGARE BANKINTER FRANCIA' THEN SUBSTRING(PymMethNam, 5, 7)
When PymMethNam = 'PAGO PAGARE SANTANDER FRANCIA' THEN SUBSTRING(PymMethNam, 5, 7)
when PymMethNam = 'PAGO CONFIRMING CAIXA' then (SUBSTRING(PymMethNam, 16, 21) + 'BG')
When PymMethNam = 'PAGO CONFIRMING SANTANDER' THEN (SUBSTRING(PymMethNam, 5, 11) + 'BG')
When PymMethNam = 'PAGO PAGARE CAIXA' THEN (SUBSTRING(PymMethNam, 5, 7) + 'BG') END as Via
from OBOE
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve

Case: No puedo utilizar mas de 10 condiciones

Publicado por xve (86 intervenciones) el 25/07/2014 21:53:31
Hola Ana, gracias por compartirlo!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar