No comprendo por que me da mal esta consulta.

46 views
Skip to first unread message

Alejandro Garcia G.

unread,
Feb 22, 2018, 4:08:54 PM2/22/18
to Comunidad de Visual Foxpro en Español
Saludos.

Estoy haciendo una consulta sobre un cursor que tengo creado en VFP con una serie de datos, debo tener en el resultado la cantiadad en día que hay en una serie de columnas, por ejemplo:

  • Tengo estas columnas dealdia, dedad0, dedad30, dedad60, dedad90, dedad180, dedadm180, dedadm360 de las cuales la unica (siempre es una) que contiene datos es dedad60 y contiene 53, el resto 0.
Cuando hago la siguiente consulta, el resultado es un * y no se por que lo hace:

SELECT 
IIF(dealdia > 0, dealdia, ;
IIF(dedad0 > 0, dedad0, ;
IIF(dedad30 > 0, dedad30, ;
IIF(dedad60 > 0, dedad60, ;
IIF(dedad90 > 0, dedad90, ;
IIF(dedad180 > 0, dedad180, ;
IIF(dedadm180 > 0, dedadm180, ;
IIF(dedadm360 > 0, dedadm360, 0)))))))) AS moraendias ;
FROM crsCursor

¿Por qué el resultado es ese *?

Alejandro Garcia G.

unread,
Feb 22, 2018, 5:49:26 PM2/22/18
to Comunidad de Visual Foxpro en Español
Ya creo que encontre la solución:

Por un lado modifique los IIF() y utilice ICASE() y todo esto contenido en un CAST() quedando de la siguiente manera.

SELECT ;
CAST(ICASE((dealdia > 0), dealdia, ;
(dedad0 > 0), dedad0, ;
(dedad30 > 0), dedad30, ;
(dedad60 > 0), dedad60, ;
(dedad90 > 0), dedad90, ;
(dedad180 > 0), dedad180, ;
(dedadm180 > 0), dedadm180, ;
(dedadm360 > 0), dedadm360, ;
0) AS N(4)) AS moraendias ;
FROM c_clientes

Lo que me causo curiosidad en un principio es que en esa misma consulta hacia eso dos veces, uno para mostrar los días y luego otro para que me mostrara la cantidad en meses de esos días, este último sí salia bien.

Bueno, en varias pruebas con varias bases de datos diferentes (los datos son distintos) me dio los resultados que esperaba.

Gracias a todos por leer.

Reply all
Reply to author
Forward
0 new messages