FoxPro/Visual FoxPro - intruccion SQL..

 
Vista:

intruccion SQL..

Publicado por TITO (356 intervenciones) el 11/11/2002 04:02:05
Tengo una tabla en la cual dos de sus campos son:
mes periodo
1 ENE2002
2 FEB2002
3 MAR2002
. .
. .
etc.
¿Como construyo una instruccion SQL de modo muestre ordenado por año y dentro del año los respectivos meses ?
Gracias,
TITO
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

RE:intruccion SQL..

Publicado por carlos (10 intervenciones) el 11/11/2002 20:35:36
SELE ALL mes, periodo FROM <nombredetabla> ORDER BY periodo,mes INTO CURSOR <nombrevista>
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

!! NO !!, no ordena como quiero

Publicado por tito (356 intervenciones) el 11/11/2002 22:53:17
!! NO !!, no ordena como quiero. Lo que me propones dejara juntos todos los periodos iguales es decir:
MAY2002
MAY2003
MAY2004
JUN2002
JUN2003
JUN2004
..
etc.
y lo que quiero es un orden cronologico.
Gracias de todas maneras por tratar de ayudarme,
TITO
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

RE:!! NO !!, no ordena como quiero

Publicado por Oscar Pallarozo (13 intervenciones) el 12/11/2002 03:08:15
Hola, lo que sucede es que tienes un error al momento de crear tu llave el cual no cumple con el ordenamiento alfabetico que necesitas, es posible que tengas que redefinirlaasi 2002-01, 2002-02, 2002-03 etc, para que se pueda ordenar el sql y demas y puedas aplicar Rushmore etc, si estas bien avanzado en tu programa puedes usar este metodo alternativo usa una funcion que te de los equivalentes que te propongo es decir :

Select mes, periodo, Clave(periodo) as miclave FROM <nombredetabla> order by miclave into cursor <nombrevista>

Function Clave
Parameters xvalor
local xret, xpref
xpref =substr(xvalor,1,3)
do case
case xpref='ENE'
xret = '01'
case xpref='FEB'
xret = '02'
...
othwerwise
xret='error'
endcase
xret = xret + substr(xvalor,4)+'-'+xret
return(xret)

Espero te sirva.
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

RE:!! Espero te sirva

Publicado por Javier Villalobos (6 intervenciones) el 12/11/2002 18:06:36
Respetando lo anterior te digo otra forma,

tu tienen un formato definido JUL2002, JUL2003, etc, para el SQL simplemente es una expresion de caracteres, cuando realizas la codificación solo te esta ordenando según la busqueda, deberias extraer (como te dice Oscar),

existen unas funciones
substr(,,)
en las cuales puedes extraer un determinado numero de caracteres, y como tu ya lo tienes predefinidos es facil, pienso que si extraes los tres primeros caracteres y luego los siguientes cuatro en el mismo SQL podras ejecutar la busqueda sin problemas
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