FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Como usar el CASE en 2 SubConsultas ????
Buen día, tengo una pregunta que no he podido responderme, lo que pasa es que tengo 1 consulta maestra con algunas subconsultas, estas subconsultas me regresan ciertos valores de tipo flotante mediante alguna suma ó resta, este resultado participan 2 select independientes, por lo que si en dicho resultado cae en 0.01 Centavos quiero dejar el resultado en CERO, pongo el ejemplo:
El Resultado del Primer Select - Segundo Select = un Valor, dicho valor quiero saber si no pasa del Tope de 0.01 ó 0.02 Centavos, si es el caso, el Resultado lo tengo que dejar a CEROS, ya probe con el CASE, pero es a nivel de Select y no puedo usarlo a nivel de 2 Select, esta consulta SQL lo hago para mostrar datos en el QReport, pongo el ejemplo de como aparecen los datos: VNORMAL 15DIAS 30 DIAS 45 DIAS TOTAL 800.00 200.00 400.00 0.01 $1,400.01 Lo que podría hacer sería que en cada uno de los QrDBLabel,dentro del evento OnPrint, validar dicho valor para mostrar en ceros, pero tendría que hacerlo también en el Total dentro de la suma que uso en el QrExpr, donde tengo en la propiedad Expression lo siguiente: Alguien sabe como hacer una condicionante dentro de la propiedad Expression???? Sería algo por el estilo:
Código:
Quedaría asi: VNORMAL 15DIAS 30 DIAS 45 DIAS TOTAL 800.00 200.00 400.00 0 $1,400.00 Espero me haya explicado.... Agradezco cualquier sugerencia.
__________________
"Hemos aprendido a volar como los Pájaros, y a nadar como los Peces, y todavía No aprendemos a vivir como Hermanos". Martin Luther King Última edición por AGAG4 fecha: 13-10-2006 a las 19:45:49. |
#2
|
||||
|
||||
Cita:
Con respecto de tu duda, podes valerte de una vista intermedia o de un stored procedure para conseguir el efecto que buscas. Explotando la idea de la vista, dejás el query tal como lo tenes y lo usas para crear una vista así:
Luego, seleccionas sobre esta vista:
Espero haberme explicado, si no, me avisas y veo la manera de darte un ejemplo mas concreto. Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#3
|
||||
|
||||
Gracias jachguate por los 2 consejos, ya le puse el CODE y se mejoro el aspecto, con respecto a lo que me comentas voy hacer pruebas..... ahorita te informo que paso....
__________________
"Hemos aprendido a volar como los Pájaros, y a nadar como los Peces, y todavía No aprendemos a vivir como Hermanos". Martin Luther King |
#4
|
||||
|
||||
El único y gran problema que le veo a las vistas es que en las Subconsultas uso fechas que le paso como parámetro al momento de armar la sentencia SQL dentro de Delphi, y como No muestro FECHAS y No debo hacerlo dentro de la Sentencia por cuestiones de Agrupamiento (Agrupado por Cliente), es por eso que en la vista no me funcionaría porque si revisa bien, tengo los parámetros de Fecha Fijos, y tendría que asignarselo en alguna parte a la vista como parámetro.
Espero haberme explicado con claridad.
__________________
"Hemos aprendido a volar como los Pájaros, y a nadar como los Peces, y todavía No aprendemos a vivir como Hermanos". Martin Luther King Última edición por AGAG4 fecha: 13-10-2006 a las 20:33:19. |
#5
|
||||
|
||||
Desconozco la forma en que debiera funcionar tu consulta, pero si precisas acotar por fechas, queda la opción de hacerlo dentro de un procedimiento almacenado que reciba estas como parámetro.
Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#6
|
||||
|
||||
Estoy continuando por el QrExpr metiendole condiciones en la propiedad Expression, del cual lo hago de la siguiente manera:
Aqui si me hace el filtro correcto de dejarme en CEROS el campo dentro del QReport, pero si quiero filtrar los que sean menores a -0.02 no me los filtra inclusive me muestra en BLANCO, al cachar el valor que toma me pone lo siguiente : Wrong Arguments for IF Y lo hago de la siguiente manera:
Si ven, es lo mismo que la anterior con la diferencia que cambio de > 0.02 a < -0.02 no veo el problema.
__________________
"Hemos aprendido a volar como los Pájaros, y a nadar como los Peces, y todavía No aprendemos a vivir como Hermanos". Martin Luther King Última edición por AGAG4 fecha: 13-10-2006 a las 23:49:51. |
#7
|
||||
|
||||
Que cosa más rara, revisando por la web me he encontrado la sintáxis en varias ocasiones y llegan a la misma sintáxis:
If(Condition,True Result, False Result) Si la Condición es VERDADERA toma el valor True Result y si es FALSO toma el False Result .
__________________
"Hemos aprendido a volar como los Pájaros, y a nadar como los Peces, y todavía No aprendemos a vivir como Hermanos". Martin Luther King |
#8
|
||||
|
||||
¡Hola a todos!
No utilizo QuickReport por ser un producto con muchas fallas, pero independientemente del reporteador que utilices, te aconsejo tener ya en conjuntos de datos todos los datos que necesites imprimir, obteniendo todos ellos mediante una consulta a la base de datos o algunos por medio de campos calculados. Así, cuando cambies de reporteador, no tendrás que reinventar el código de esas expresiones de impresión. Si es posible en un data set hágalo en un data set. Un abrazo expresivo. Al González. |
#9
|
||||
|
||||
Gracias Alberto, lo tomare muy en cuenta....
__________________
"Hemos aprendido a volar como los Pájaros, y a nadar como los Peces, y todavía No aprendemos a vivir como Hermanos". Martin Luther King |
#10
|
||||
|
||||
Siguiendo con las recomendaciones, opte por hacerlo en un proc. almacenado, pero el inconveniente es que este "amigo" no me regresa más de 1 registro dentro de 1 select me marca error multiple rows in singleton select , desgraciadamente no encuentro por donde atacar mi problema, en las Vistas estaría excelente si me aceptaran parametros y en los SP me aceptan parametros pero NO regresan más de 1 registro a la vez, y con respecto al QrExpr no me funciona las condiciones siguiente:
__________________
"Hemos aprendido a volar como los Pájaros, y a nadar como los Peces, y todavía No aprendemos a vivir como Hermanos". Martin Luther King |
#11
|
|||
|
|||
Hola, eso de que el storeProcedure solo devuelve 1 registro no me suena...
Como hiciste la llamada al procedimiento? Select * from Nombre_StoreProcedure(param01, param02...) y en el procedimiento haces la busqueda con: FOR SELECT XXX FROM XXX WHERE XXX INTO XXX DO BEGIN...END SUSPEND; Te comento porque yo uso muchos procedimientos, tanto de seleccion como de manipulacion y los de seleccion traen bastante de bastante. espero haberme explicado y que te oriente un poco |
#12
|
|||
|
|||
Uso De Case Con Dos Subconsultas
PONGO EN NEGRITO LO QUE AGREGUE PARA QUE LO DISTINGAS: /*Select Maestro*/SELECT V.CLAVE,V.NOMBRE,C.CLIENTE,CC.NOMCLI, /*Primer SubConsulta*/CASE WHEN (FUD_ROUND((SELECT COALESCE(SUM(FUD_ROUND(IMPORTE,2)),0) FROM TCARGOS WHERE CAST('12.10.2006' AS DATE) - FECHAMOV <15 AND FECHAMOV<='12.10.2006' AND CARABO = 1 AND CLIENTE = C.CLIENTE AND CVEDOCUM <>'CREM') -/*Segunda SubConsulta*/(SELECT COALESCE(SUM(FUD_ROUND(IMPORTE,2)),0) FROM TABONOS WHERE CAST('12.10.2006' AS DATE) - FECHAFAC <15 AND FECHAMOV<='12.10.2006' AND CARABO = 2 AND CLIENTE = C.CLIENTE ),2)) = 0.010 THEN 0ELSE /*Primer SubConsulta*/(FUD_ROUND((SELECT COALESCE(SUM(FUD_ROUND(IMPORTE,2)),0) FROM TCARGOS WHERE CAST('12.10.2006' AS DATE) - FECHAMOV <15 AND FECHAMOV<='12.10.2006' AND CARABO = 1 AND CLIENTE = C.CLIENTE AND CVEDOCUM <>'CREM') -/*Segunda SubConsulta*/(SELECT COALESCE(SUM(FUD_ROUND(IMPORTE,2)),0) FROM TABONOS WHERE CAST('12.10.2006' AS DATE) - FECHAFAC <15 AND FECHAMOV<='12.10.2006' AND CARABO = 2 AND CLIENTE = C.CLIENTE ),2)) Ya lo probe y si funciona, esto si, habria que ver el rendimiento ......
|
#13
|
||||
|
||||
OK.... Gracias, sinceramente no sabía que se usaba los ciclos For..do para traerse más de 1 registro en un SP, voy a seguir probando....
Gracias!!!!
__________________
"Hemos aprendido a volar como los Pájaros, y a nadar como los Peces, y todavía No aprendemos a vivir como Hermanos". Martin Luther King |
#14
|
||||
|
||||
1000 disculpas compañeros cometí una gran burrada, no me fije que lo que quería filtrar eran las subconsultas y estas estaban dentro de un Select Maestro, por lo que el CASE si funciona en ese nivel, al mejor cazador se le va la liebre
Gracias Edgar Perez(Alias el LOCOCHON) me hicistes ver mi Gran ERROR!!!! Gracias por sus respuestas compañeros
__________________
"Hemos aprendido a volar como los Pájaros, y a nadar como los Peces, y todavía No aprendemos a vivir como Hermanos". Martin Luther King |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
¿Como hacer que LIKE no sea case-sensitive? | JuanBCT | SQL | 3 | 04-08-2006 21:50:28 |
Problemas al usar case | David | OOP | 5 | 28-07-2006 17:14:19 |
Subconsultas | c748a | SQL | 0 | 19-04-2005 13:41:23 |
SubConsultas | Carlex | SQL | 3 | 05-08-2004 14:23:55 |
Subconsultas en ORACLE | Investment | Oracle | 4 | 19-06-2003 00:50:04 |
|