noobdai
Desconectado
Mensajes: 27
|
Hola,Buenas noches. Tengo un problema a la hora de realizar una consulta con una condición por meses.
¿Alguien sabría decirme que tipo de condición hacer?
Ejemplo 1: Consulta total de registros por mes
Ejemplo 2: Consulta total de registros entre 2 fechas
Saludos
|
|
|
|
|
En línea
|
|
|
|
Shell Root
Desconectado
Mensajes: 2.400
Alex Jurado
|
WTF!... Algo así? SELECT COUNT(*) FROM tblUsuario WHERE(strFecha = '01/02/2010') AND (strFecha = '28/02/2010')
|
|
|
|
|
En línea
|
 ---
|
|
|
Novlucker
Ninja y
Ex-Staff
Desconectado
Mensajes: 10.225
Yo que tu lo pienso dos veces
|
+group by, porque entiendo quieres sacar la cantidad de registros agrupados por mes, aunque tal vez me equivoque  Saludos
|
|
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD http://twitter.com/novlucker "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
^Tifa^
Desconectado
Mensajes: 2.802
|
Parece que no soy la unica  No entiendo bien tu peticion tampoco... Es algo como saber cuantos registros existen por cada mes en los 12 meses???? y imprimir algo como: ENERO: 200 registros FEBRERO: 300 registros MARZO: 150 registros ect.... Y eso de total de registros por 2 fechas? Seria como: ENERO + FEBRERO : 500 registros... Si tu peticion es mas o menos eso.. probablemente tenga que apoyarme en el uso de un poquito de PL y cursores  o a lo mejor no, dependera de tu explicacion de que requieres... La DB es Oracle verdad?
|
|
|
|
« Última modificación: 4 Marzo 2010, 21:37 por ^TiFa^ »
|
En línea
|
|
|
|
noobdai
Desconectado
Mensajes: 27
|
Parece que no soy la unica  No entiendo bien tu peticion tampoco... Es algo como saber cuantos registros existen por cada mes en los 12 meses???? y imprimir algo como: ENERO: 200 registros FEBRERO: 300 registros MARZO: 150 registros ect.... Y eso de total de registros por 2 fechas? Seria como: ENERO + FEBRERO : 500 registros... Si tu peticion es mas o menos eso.. probablemente tenga que apoyarme en el uso de un poquito de PL y cursores  La DB es Oracle verdad? Si ,Tifa esa es mi petición  Y la BD es Oracle también  Insertar Cita WTF!... Algo así? Código
SELECT COUNT(*) FROM tblUsuario WHERE(strFecha = '01/02/2010') AND (strFecha = '28/02/2010') No me ha funcionado...no me devuelve ningún registro. Pero gracias de todas formas 
|
|
|
|
|
En línea
|
|
|
|
Nakp
casi es
Ex-Staff
Desconectado
Mensajes: 6.335
he vuelto :)
|
ehm... la condicion no va en WHERE, es BETWEEN SELECT COUNT(*) FROM tblUsuario WHERE strFecha BETWEEN '01/02/2010' AND '28/02/2010' pd: por favor gente acostumbrense a usar [code=sql][/code] al rededor de su codigo 
|
|
|
|
« Última modificación: 4 Marzo 2010, 21:57 por Nakp »
|
En línea
|
Ojo por ojo, y el mundo acabará ciego.
|
|
|
noobdai
Desconectado
Mensajes: 27
|
ehm... la condicion no va en WHERE, es BETWEEN SELECT COUNT(*) FROM tblUsuario WHERE strFecha BETWEEN '01/02/2010' AND '28/02/2010' pd: por favor gente acostumbrense a usar [code=sql][/code] al rededor de su codigo  Sorry por lo del código. En cuanto a la modificación de la sentencia anterior...si tengo la fecha en Date..con "TO CHAR" valdría igual no? Me sigue sin funcionar,ahora me dice que falta una expresión... BETWEEN (CABFACTURA.FECHA='01/02/10') AND (CABFACTURA.FECHA='28/02/10')
|
|
|
|
« Última modificación: 4 Marzo 2010, 22:28 por noobdai »
|
En línea
|
|
|
|
Nakp
casi es
Ex-Staff
Desconectado
Mensajes: 6.335
he vuelto :)
|
ah? xD mira... hablado  DONDE campo ENTRE valor1 Y valor2 SELECT COUNT(*) FROM tabla WHEReM5CABFACTURA.FECHA BETWEEN '01/02/10' AND '28/02/10' estas seguro que la fecha esta bien? el formato... yo las uso YYYYMMDD o DD-MM-YYYY o DD/MM/YY pero nunca XX/XX/XX
|
|
|
|
|
En línea
|
Ojo por ojo, y el mundo acabará ciego.
|
|
|
noobdai
Desconectado
Mensajes: 27
|
ahora si,pero...¿sabes como coger el mes de las fechas?  Saludos
|
|
|
|
|
En línea
|
|
|
|
Nakp
casi es
Ex-Staff
Desconectado
Mensajes: 6.335
he vuelto :)
|
no se si en oracle pero prueba MONTH('fecha') aunque no creo que sirva porque que hay entre octubre y marzo (2009-2010) es mas logico definir las fechas completas 
|
|
|
|
|
En línea
|
Ojo por ojo, y el mundo acabará ciego.
|
|
|
noobdai
Desconectado
Mensajes: 27
|
Ok. Muchas gracias por todo.  Saludos
|
|
|
|
|
En línea
|
|
|
|
^Tifa^
Desconectado
Mensajes: 2.802
|
Si te inclinas por crear un procedimiento con lo siguiente como contenido... podria servirte  Donde la fecha puede pasar como parametro. SQL> SELECT * FROM ejemplo; FECHA SALARIO --------- ---------- 20-JAN-09 23000 15-JAN-09 14000 28-FEB-09 20000 15-FEB-08 20000 13-JAN-08 25000 27-DEC-09 20000 16-DEC-09 25000 10-DEC-09 18000 8 ROWS selected. SQL> DECLARE 2 SUMA INTEGER; 3 BEGIN 4 FOR a IN 0..12 5 LOOP 6 SELECT COUNT(SALARIO) INTO SUMA FROM EJEMPLO WHERE FECHA > '31-DEC-08' AND SUBSTR((TO_CHAR(FECHA, 'DD/MM/YY')), 4, 2) = a; 7 DBMS_OUTPUT.PUT_LINE('El mes :: '||a||' Tiene '||suma||' Registros'); 8 END LOOP; 9 END; 10 / El mes :: 0 Tiene 0 Registros El mes :: 1 Tiene 2 Registros El mes :: 2 Tiene 1 Registros El mes :: 3 Tiene 0 Registros El mes :: 4 Tiene 0 Registros El mes :: 5 Tiene 0 Registros El mes :: 6 Tiene 0 Registros El mes :: 7 Tiene 0 Registros El mes :: 8 Tiene 0 Registros El mes :: 9 Tiene 0 Registros El mes :: 10 Tiene 0 Registros El mes :: 11 Tiene 0 Registros El mes :: 12 Tiene 3 Registros PL/SQL PROCEDURE successfully completed. Tenia tiempo que no tocaba PL/SQL
|
|
|
|
|
En línea
|
|
|
|
noobdai
Desconectado
Mensajes: 27
|
Si te inclinas por crear un procedimiento con lo siguiente como contenido... podria servirte  Donde la fecha puede pasar como parametro. SQL> SELECT * FROM ejemplo; FECHA SALARIO --------- ---------- 20-JAN-09 23000 15-JAN-09 14000 28-FEB-09 20000 15-FEB-08 20000 13-JAN-08 25000 27-DEC-09 20000 16-DEC-09 25000 10-DEC-09 18000 8 ROWS selected. SQL> DECLARE 2 SUMA INTEGER; 3 BEGIN 4 FOR a IN 0..12 5 LOOP 6 SELECT COUNT(SALARIO) INTO SUMA FROM EJEMPLO WHERE FECHA > '31-DEC-08' AND SUBSTR((TO_CHAR(FECHA, 'DD/MM/YY')), 4, 2) = a; 7 DBMS_OUTPUT.PUT_LINE('El mes :: '||a||' Tiene '||suma||' Registros'); 8 END LOOP; 9 END; 10 / El mes :: 0 Tiene 0 Registros El mes :: 1 Tiene 2 Registros El mes :: 2 Tiene 1 Registros El mes :: 3 Tiene 0 Registros El mes :: 4 Tiene 0 Registros El mes :: 5 Tiene 0 Registros El mes :: 6 Tiene 0 Registros El mes :: 7 Tiene 0 Registros El mes :: 8 Tiene 0 Registros El mes :: 9 Tiene 0 Registros El mes :: 10 Tiene 0 Registros El mes :: 11 Tiene 0 Registros El mes :: 12 Tiene 3 Registros PL/SQL PROCEDURE successfully completed. Tenia tiempo que no tocaba PL/SQL Muchas gracias Tifa te lo has currado  pero necesito que sea SQL ya que PL/SQL no lo hemos tocado en clase. 
|
|
|
|
|
En línea
|
|
|
|
^Tifa^
Desconectado
Mensajes: 2.802
|
Pues puro SQL SELECT COUNT(SALARIO) INTO SUMA FROM EJEMPLO WHERE FECHA > '31-DEC-08' AND SUBSTR((TO_CHAR(FECHA, 'DD/MM/YY')), 4, 2) = a;
|
|
|
|
|
En línea
|
|
|
|
noobdai
Desconectado
Mensajes: 27
|
Pues puro SQL SELECT COUNT(SALARIO) INTO SUMA FROM EJEMPLO WHERE FECHA > '31-DEC-08' AND SUBSTR((TO_CHAR(FECHA, 'DD/MM/YY')), 4, 2) = a; Nuca había utilizado "SUBSTR"..mmm lo probaré  Gracias Saludos 
|
|
|
|
|
En línea
|
|
|
|
|