hola compañeros, ¿como hago un IF o un case en una sentencia SQL de una tabla paradox?
saludos....
[RESUELTO] Case o IF paradox
Comenzado por
look
, dic 17 2010 11:59
5 respuestas en este tema
#1
Escrito 17 diciembre 2010 - 11:59
#2
Escrito 17 diciembre 2010 - 12:08
Hola,
Paradox sólo se puede acceder mediante el Borland Database Engine (BDE), que yo sepa, y el BDE utiliza para tablas planas lo que se llama SQL local, que tiene sus limitaciones, desde luego no hay IF ni CASE (Paradox no dispone de procedimientos almacenados).
Si quieres especificar una condición, ponla en la cláusula WHERE, y si lo que buscas es poder juntar registros que cumplan diferentes condiciones y que no puedas conseguir mediante un WHERE, trata de usar una union de consultas, juntando cada una con la siguiente mediante la cláusula UNION.
Habría que ver qué es exactamente lo que quieres obtener.
Saludos
Paradox sólo se puede acceder mediante el Borland Database Engine (BDE), que yo sepa, y el BDE utiliza para tablas planas lo que se llama SQL local, que tiene sus limitaciones, desde luego no hay IF ni CASE (Paradox no dispone de procedimientos almacenados).
Si quieres especificar una condición, ponla en la cláusula WHERE, y si lo que buscas es poder juntar registros que cumplan diferentes condiciones y que no puedas conseguir mediante un WHERE, trata de usar una union de consultas, juntando cada una con la siguiente mediante la cláusula UNION.
Habría que ver qué es exactamente lo que quieres obtener.
Saludos
#3
Escrito 17 diciembre 2010 - 12:16
sql
SELECT NUM_REG,CLV_ART, TIPO_MOV,ALMACEN, CASE WHEN TIPO_MOV<51 THEN CANT WHEN TIPO_MOV>50 THEN CANT*-1 END AS CANTES FROM MINV01
esta es mas o menos una sentencia que utilizo para el sql server, pero evidentemente no funciona con tablas paradox, quiero pasar esto a paradox.
saludos!
#4
Escrito 17 diciembre 2010 - 12:21
Aunque no lo he probado debería poderse hacer con un UNION, a ver si te sirve:
Naturalmente, el resultado no es el mismo respecto al orden en que te aparecerá, ya que los que cumplan la segunda condición (TIPO_MOV > 50) aparecerán al final. Tampoco se puede esperar de Paradox lo mismo que de SQL Server
sql
SELECT NUM_REG, CLV_ART, TIPO_MOV, ALMACEN, CANT FROM MINV01 WHERE TIPO_MOV < 51 UNION SELECT NUM_REG, CLV_ART, TIPO_MOV, ALMACEN, CANT * -1 FROM MINV01 WHERE TIPO_MOV > 50
Naturalmente, el resultado no es el mismo respecto al orden en que te aparecerá, ya que los que cumplan la segunda condición (TIPO_MOV > 50) aparecerán al final. Tampoco se puede esperar de Paradox lo mismo que de SQL Server
#5
Escrito 17 diciembre 2010 - 12:29
Pues acabo de probarlo desde el Database Desktop y me los ha mezclado por orden alfabético, los de la primera con los de la segunda consulta, no me lo esperaba ...Naturalmente, el resultado no es el mismo respecto al orden en que te aparecerá, ya que los que cumplan la segunda condición (TIPO_MOV > 50) aparecerán al final. Tampoco se puede esperar de Paradox lo mismo que de SQL Server
#6
Escrito 17 diciembre 2010 - 01:41
hola , gracias por tu ayuda, ya lo solucione, queria migrar los formularios de sql server a paradox por un caso especial que se me dio, pero no ha sido necesario hacer eso, como sea.... gracias por la ayuda::.
saludos!
saludos!