Ir al contenido


Foto

cunsulta de dias por mes


  • Por favor identifícate para responder
6 respuestas en este tema

#1 andy

andy

    Member

  • Miembros
  • PipPip
  • 47 mensajes
  • Locationespana

Escrito 15 febrero 2012 - 11:22

Hola doy gracias a marthamelo pues gracias a sus preguntas he resuelto  duda en una consulta  pero aun tengo una bastante grande para mi  les explico
Trabajo en una empresa de ámbito constructivo y por ende tenemos una gran cantidad de obreros los cuales generan partes diarios por cada obra, figúrense que cada parte incluye las horas trabajadas por cada obrero y cada día se agregan varios partes correspondientes a cada obra. Yo deseo hacer una consulta  que  me de como resultado las horas trabajadas cada día de un mes
Seria algo así
[table]
[tr]
[td]      DIA           Hrs. Trabajadas   Hrs. Paradas         Total de horas
01/01/2012       1027,0                 3,0                     1030,0
02/01/2012         724,0             145,0                       869,0[/td]
[/tr]
[/table]

Estos campos existen dentro de una tabla pero por obrero y por dia  lo que no se es como hacer la suma de todos los obreros en todas las obras cada dia y saltar al siguiente si se puede 

pues esta consulta me da la suma pero total del priodo
SELECT  SUM(HORAS_TRABAJADAS) AS HORASTRABAJADAS, SUM(HORAS_PARADAS) AS HORASPARADAS, SUM(TOTAL_HORAS) AS TOTALHORAS FROM ASAP_PARTEDEOBRA WHERE FECHA_PARTE BETWEEN ('01/01/2012')AND('31/01/2012') 


  • 0

#2 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 15 febrero 2012 - 11:30

Hola
Select DISTINCT IDTrabajador, Dia, Sum(HrsTrabajadas) as HorasTrab, Sum(HrsParadas) as HorasParo, Sum(HrsTrabajadas + HrsParadas) as totalHoras From TuTabla
Group By IDTrabajador, Dia.

Saludos
  • 0

#3 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 15 febrero 2012 - 11:32

Buenas

Imagino que SQL Server tendrá el extract, sino deberías de buscar su equivalente


select extract(month from dia) mes, sum(horas)
from table
where extract(month from dia) = :mes


Nos leemos
  • 0

#4 andy

andy

    Member

  • Miembros
  • PipPip
  • 47 mensajes
  • Locationespana

Escrito 15 febrero 2012 - 11:48

Hola
CARAL y CADETILL. 
perdonen pero no entiendo, cuando se refieren a dia y mes pudieran explicarme

  • 0

#5 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 15 febrero 2012 - 12:00

Buenas

En mi caso, si te refieres al "mes" de la select, es simplemente un alias. Y si te refieres al "mes" del where es simplemente un filtro (sustitúyelo por el mes que quieras, aunque también debería de ir el año ahí en el where jejejeje)

EDITO: la consulta podría quedar así más o menos


SELECT EXTRACT(MONTH FROM dia) mes, SUM(horas)
FROM TABLE
WHERE dia between dia_inicio_mes and dia_fin_mes
group by 1


No uso el extract en el where porque si tienes un índice por el campo día (que sería lo normal) al menos Firebird no lo usa, necesitas usar el campo sin funciones

Nos leemos
  • 0

#6 andy

andy

    Member

  • Miembros
  • PipPip
  • 47 mensajes
  • Locationespana

Escrito 15 febrero 2012 - 12:04

MUCHAS GRACIAS  TODO BIEN
  • 0

#7 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 15 febrero 2012 - 08:08

Saludos.

Me parece que la sentencia EXTRACT, MSSQL no la soporta, MSSQL en ocasiones no respeta el ANSI.
Su equivalente:
  • EXTRACT(YEAR FROM FECHA) -> YEAR(FECHA)
  • EXTRACT(MONTH FROM FECHA) -> MONTH(FECHA)
  • EXTRACT(DAY FROM FECHA) -> DAY(FECHA)

Referencia.
  • 0




IP.Board spam blocked by CleanTalk.