Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-01-2012
Panasys Panasys is offline
Miembro
 
Registrado: ago 2007
Posts: 88
Poder: 17
Panasys Va por buen camino
Consultas anidadas y agrupadas

Hola Amigos.. el tema es el siguiente, tengo que sumar la cantidad de registros de un campo VALOR, la tabla tiene los campos FECHA, HORA y VALOR, ahora necesito todos los valores hora a hora dia a dia, mostrarlos en un form en una columna los dias y en las filas los valores de las 24 horas de forma individual, hay horas que suman 20 otras 30 otras 50.

Arranque con algo asi:

Código SQL [-]
Select Fecha, Sum(Valor) AS NuevoValor From registros 
where Fecha between "2012-01-01" and "2012-01-30" Group By Fecha

Pero me suma todo, me muestra dia por dia, pero necesito agrupado por dia pero que me muestra hora por hora, si utilizo el extract me muestra hora por hora pero las 24 horas sin importar los dias. Alguien me tira un hilo? o como deberia buscar la solucion (ya intente google, clubdelphi) pero si ya esta contestado por donde buscar... gracias y si la solucion es sencilla disculpen la pregunta y las molestias!



saludos
Responder Con Cita
  #2  
Antiguo 17-01-2012
papote654 papote654 is offline
Miembro
 
Registrado: nov 2006
Posts: 29
Poder: 0
papote654 Va por buen camino
matriz consultas anidadas y agrupadas

saludos amigo,

segun entiendo lo que quieres son los dias en columna y en las filas las horas con la suma de un valor. como planteas tu tabla, debes llevar los registros o dias de las fechas a columna y eso lo haces en SQL con la funcion PIVOT que esta en funcionamiento desde SQL 2005 sino mal recuerdo.

aqui te hice un ejemplo espero sea lo que necesitas.

te comento que uso la function DATEPART para determinar la hora, pero si guardas ese dato en un campo separado como dices no sera necesario.

Código SQL [-]
    SELECT DATEPART(Hour,fecha) Hora, ISNULL(Lunes,0) Lunes, 
           ISNULL(Martes,0) Martes, 
           ISNULL(Miercoles,0) Miercoles, 
           ISNULL(Jueves,0) Jueves, 
           ISNULL(Viernes,0) Viernes, 
           ISNULL(Sabado,0) Sabado, 
           ISNULL(Domingo,0) Domingo FROM
        (
        SELECT fecha, CASE WHEN DATEPART(DW,fecha) = 1 THEN 'Domingo'
                    WHEN DATEPART(DW,fecha) = 2 THEN 'Lunes'
                    WHEN DATEPART(DW,fecha) = 3 THEN 'Martes'
                    WHEN DATEPART(DW,fecha) = 4 THEN 'Miercoles'
                    WHEN DATEPART(DW,fecha) = 5 THEN 'Jueves'
                    WHEN DATEPART(DW,fecha) = 6 THEN 'Viernes'
                    WHEN DATEPART(DW,fecha) = 7 THEN 'Sabado' END Dias,
                COALESCE(SUM(dt_total),0) Valor
                FROM registros  
        GROUP BY DATEPART(DW,fecha), fecha
        ) AS Datos 
    PIVOT (SUM(Valor) FOR Dias IN ([Lunes],[Martes],[Miercoles],[Jueves],[Viernes],[Sabado],[Domingo])) AS Matriz
ORDER BY DATEPART(Hour,fecha)
__________________
Al que no le gusta enseñar, no merece aprender...

Última edición por papote654 fecha: 17-01-2012 a las 02:03:24.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
consultas anidadas Carlosguiland MySQL 6 17-04-2007 22:42:27
Consultas anidadas mauilore Firebird e Interbase 4 11-07-2006 20:31:54
Consultas anidadas en procedimientos almacenados Choclito Firebird e Interbase 7 18-07-2004 22:06:33
Consultas anidadas jmselesan Firebird e Interbase 1 08-08-2003 16:20:08
Consultas Anidadas o Maestro/Detalle? judoboy SQL 8 05-05-2003 18:48:05


La franja horaria es GMT +2. Ahora son las 20:24:26.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi