Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Consulta SQL

Estas en el tema de Consulta SQL en el foro de SQL Server en Foros del Web. Hola a todos, estoy haciendo una consulta que me trae loco y no consigo resolver. Os pongo mi problema por si alguien puede echarme una ...
  #1 (permalink)  
Antiguo 29/01/2008, 06:56
 
Fecha de Ingreso: julio-2007
Mensajes: 23
Antigüedad: 17 años, 5 meses
Puntos: 0
Consulta SQL

Hola a todos,
estoy haciendo una consulta que me trae loco y no consigo resolver. Os pongo mi problema por si alguien puede echarme una mano.
Tengo dos tablas:
Diario--->Fecha, CodUsu,Deposito
Cliente-->CodUsu,CodUsu1, CodUsu2

Sobre estas tablas hago la siguiente consulta:

SELECT Year(Fecha) AS ['Anio'], Month(Fecha) AS ['Mes'], Diario.CodUsu, Cliente.CodUsu1, Cliente.CodUsu2, Sum(Diario.Deposito) AS ['SumaDeposito']
FROM Diario INNER JOIN Cliente ON Diario.CodUsu= Cliente.CodUsu
GROUP BY Year(Fecha), Month(Fecha), Diario.CodUsu, Cliente.CodUsu1, Cliente.CodUsu2
ORDER BY Year(Fecha) DESC , Month(Fecha) DESC , Cliente.CodUsu1;

Esto me devuelve

'Anio' 'Mes' CodUsu CodUsu1 CodUsu2 'SumaDeposito'
2008 1 M1 M1 M1 222
2008 1 M2 M2 M2 0
2008 1 M4 M4 M4 333
2008 1 M5 M5 M5 6565
2008 1 M6 M6 M4 54666,5
2008 1 M7 M7 M5 55455,16
2008 1 M8 M8 M5 55,7
2008 1 M9 M9 M4 45645
2008 1 M10 M10 M2 6455,5
2008 1 M11 M11 M2 245
2008 1 M12 M1 M1 0
2008 1 M14 M1 M1 34534,68

Lo que pretendo

Es que busque en CodUsu1 y CodUsu2 los CodUsu que hay, si aparecen, y me los vuelva a sumar, agrupandolos en CodUsu, es decir:

'Anio' 'Mes' CodUsu SumaTotal
2008 1 M1 ResultadoDeSuma
2008 1 M2 ResultadoDeSuma

Gracias de antemano por las posibles ayudas, me tiene quemado la dichosa consulta.
  #2 (permalink)  
Antiguo 29/01/2008, 08:34
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 20 años
Puntos: 38
Re: Consulta SQL

Código:
Select  R.Anio           as ['Anio']
       ,R.Mes            as ['Mes']
       ,R.CodUsu         as ['CodUsu'] 
       ,Sum(R.Deposito)  as ['SumaDeposito']
From 
   (Select  Year(Fecha)       as ['Anio']
           ,Month(Fecha)      as ['Mes']
           ,C.CodUsu1         as ['CodUsu'] 
           ,Sum(D.Deposito)   as ['SumaDeposito']
   From     Cliente  C 
   Inner join 
            Diario  D
   On       C.CodUsu1 = D.CodUsu 
   Group by Year(Fecha) 
           ,Month(Fecha)
           ,C.CodUsu1
   
   Union all
   
   Select   Year(Fecha)        as ['Anio']
           ,Month(Fecha)       as ['Mes']
           ,C.CodUsu2          as ['CodUsu'] 
           ,Sum(D.Deposito)    as ['SumaDeposito']
   From     Cliente  C 
   Inner join 
            Diario  D
   On       C.CodUsu2 = D.CodUsu 
   Group by Year(Fecha)
           ,Month(Fecha)
           ,C.CodUsu2
   ) as R
Group by  R.Anio
         ,R.Mes
         ,R.CodUsu
Order by  R.Anio DESC
         ,R.Mes     DESC
         ,R.CodUsu
Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.

Última edición por Andres95; 29/01/2008 a las 08:35 Razón: Sintaxis
  #3 (permalink)  
Antiguo 29/01/2008, 08:36
 
Fecha de Ingreso: enero-2008
Mensajes: 11
Antigüedad: 17 años
Puntos: 0
Re: Consulta SQL

se me ocurre que te pueda funcionar de esta menera.

SELECT Year(Fecha) AS ['Anio'], Month(Fecha) AS ['Mes'], Diario.CodUsu, Cliente.CodUsu1, Cliente.CodUsu2, Sum(Diario.Deposito) AS ['SumaDeposito']
FROM Diario, Cliente
where Diario.CodUsu= Cliente.CodUsu
and Diario.CodUsu=Cliente.CodUsu1
and Diario.CodUsu=Cliente.CodUsu2
GROUP BY Year(Fecha), Month(Fecha), Diario.CodUsu, Cliente.CodUsu1, Cliente.CodUsu2
ORDER BY Year(Fecha) DESC , Month(Fecha) DESC , Cliente.CodUsu1;

como deseas que sean para el mismo usuario, entonces comprara que los codusu de la tabla cliente correspondan al mismo.
  #4 (permalink)  
Antiguo 30/01/2008, 09:49
 
Fecha de Ingreso: julio-2007
Mensajes: 23
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Consulta SQL

Gracias chicos por las respuestas, me ha sido de mucha utilidad. Cuando te atascas en un problema por más vueltas que le das no hay manera de sacarlo.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:46.