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 10-09-2012
Avatar de DarkBlue
DarkBlue DarkBlue is offline
Miembro
 
Registrado: jun 2010
Posts: 105
Poder: 14
DarkBlue Va por buen camino
Unir filas con la misma llave de una misma consulta sql server

bueno, compañeros tengo una consulta un tanto complicada no se donde se encuentre el truco para lograrla estoy trabajando con sql server 2008 express la consulta la trato de obtener de una vista que he creado.

lo que intento es lo siguiente.


tengo los 12 meses del año y dependiendo que si es enero,abril u otro mes sume el monto de ese mes para ese proveedor y lo mismo para los 12 meses de ese proveedor. pero no obtengo el resultado que quiero por que me entrega para cada mes otra fila con el monto

de esta manera:
proveedor enero febrero marzo abril ....
p1 0.0 12.30
p2 0 12
p1 12

y yo necesito todos los valores de cada mes para cada proovedor en una sola fila.
es decir asi.

proveedor enero febrero marzo abril ....
p1 12 12.30
p2 0 12




tengo esta consulta

Código SQL [-]


SELECT razon_social, case when MONTH(fecharecivo)=1 then SUM(saldoporpagar)else 0 end as 'Enero'
,case when MONTH(fecharecivo)=2 then SUM(saldoporpagar)else 0 end as 'Febrero'
,case when MONTH(fecharecivo)=3 then SUM(saldoporpagar)else 0 end as 'Marzo'
,case when MONTH(fecharecivo)=4 then SUM(saldoporpagar)else 0 end as 'Abril'
,case when MONTH(fecharecivo)=5 then SUM(saldoporpagar)else 0 end as 'Mayo'
,case when MONTH(fecharecivo)=6 then SUM(saldoporpagar)else 0 end as 'Junio'
,case when MONTH(fecharecivo)=7 then SUM(saldoporpagar)else 0 end as 'Julio'
,case when MONTH(fecharecivo)=8 then SUM(saldoporpagar)else 0 end as 'Agosto'
,case when MONTH(fecharecivo)=9 then SUM(saldoporpagar)else 0 end as 'Septiembre'
,case when MONTH(fecharecivo)=10 then SUM(saldoporpagar)else 0 end as 'Octubre'
,case when MONTH(fecharecivo)=11 then SUM(saldoporpagar)else 0 end as 'Noviembre'
,case when MONTH(fecharecivo)=12 then SUM(saldoporpagar)else 0 end as 'Diciembre'
from facturasfoliosporpagar
group by razon_social,FECHARECIVO

acaso tengo que hacer algun inner join o algo por el estilo?

muchas gracias por su tiempo
__________________
Todo es Relativo
Responder Con Cita
  #2  
Antiguo 10-09-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
No entiendo bien cuál es el problema. Pero lo que sí veo raro son las sentencia de cada mes:

Código SQL [-]
case when MONTH(fecharecivo)=2 then SUM(saldoporpagar)else 0 end as 'Febrero'

Creo que más bien deberían ser así:

Código SQL [-]
SUM(case when MONTH(fecharecivo)=2 then saldoporpagar else 0 end) as 'Febrero'

// Saludos
Responder Con Cita
  #3  
Antiguo 11-09-2012
Avatar de DarkBlue
DarkBlue DarkBlue is offline
Miembro
 
Registrado: jun 2010
Posts: 105
Poder: 14
DarkBlue Va por buen camino
gracias por tu tiempo roman wow no me imagine la condicion dentro de la funcion de agregado .

es que yo necesito en una sola fila por proveedor todos los montos totales por mes y los obtengo por filas separadas.
en una fila me devuelve del provedor uno con el total de enero , en otra el proveedor uno con el saldo total de febrero pero necesito todos los saldos en una sola fila.

una ves mas gracias
__________________
Todo es Relativo
Responder Con Cita
  #4  
Antiguo 11-09-2012
abelg abelg is offline
Miembro
 
Registrado: jul 2004
Posts: 50
Poder: 20
abelg Va por buen camino
mira la solución la tabla temporal es solo para el ejemplo:
Código SQL [-]
Create table #factura (
     razonsoc varchar(100),
     fecha datetime,
     monto money )
insert #factura values('P1','2012-01-10 00:00:00', 1000) 
insert #factura values('P1','2012-01-15 00:00:00', 500)
insert #factura values('P1','2012-02-10 00:00:00', 900) 
insert #factura values('P1','2012-05-31 00:00:00', 1000) 
insert #factura values('P1','2012-07-10 00:00:00', 100) 
insert #factura values('P1','2012-12-10 00:00:00', 700) 
insert #factura values('P2','2012-01-10 00:00:00', 2000) 
insert #factura values('P2','2012-05-10 00:00:00', 4000) 
insert #factura values('P3','2012-02-10 00:00:00', 500)  
Select razonsoc, [1] Enero, [2] Febrero, [3] Marzo, [4] Abril,
[5] Mayo, [6] Junio, [7] Julio, [8] Agosto, [9] Septiembre, [10] Octubre,
[11] Noviembre, [12] Diciembre 
From (Select razonsoc, month(fecha) mes, monto
         From #factura) p 
Pivot(
     Sum(monto)
     For mes in ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12])
)as pvt
order by pvt.razonsoc  
Drop table #factura
salu2

Última edición por abelg fecha: 11-09-2012 a las 19:43:12.
Responder Con Cita
  #5  
Antiguo 11-09-2012
Avatar de DarkBlue
DarkBlue DarkBlue is offline
Miembro
 
Registrado: jun 2010
Posts: 105
Poder: 14
DarkBlue Va por buen camino
Cita:
Empezado por abelg Ver Mensaje
mira la solución la tabla temporal es solo para el ejemplo:
Código SQL [-]
Create table #factura (
     razonsoc varchar(100),
     fecha datetime,
     monto money )
insert #factura values('P1','2012-01-10 00:00:00', 1000) 
insert #factura values('P1','2012-01-15 00:00:00', 500)
insert #factura values('P1','2012-02-10 00:00:00', 900) 
insert #factura values('P1','2012-05-31 00:00:00', 1000) 
insert #factura values('P1','2012-07-10 00:00:00', 100) 
insert #factura values('P1','2012-12-10 00:00:00', 700) 
insert #factura values('P2','2012-01-10 00:00:00', 2000) 
insert #factura values('P2','2012-05-10 00:00:00', 4000) 
insert #factura values('P3','2012-02-10 00:00:00', 500)  
Select razonsoc, [1] Enero, [2] Febrero, [3] Marzo, [4] Abril,
[5] Mayo, [6] Junio, [7] Julio, [8] Agosto, [9] Septiembre, [10] Octubre,
[11] Noviembre, [12] Diciembre 
From (Select razonsoc, month(fecha) mes, monto
         From #factura) p 
Pivot(
     Sum(monto)
     For mes in ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12])
)as pvt
order by pvt.razonsoc  
Drop table #factura
salu2
eres grande sin duda solo alguien con tus conocimientos pudo ayudarme doy como solucionado mi problema ahora solo me queda estudiar las sentencias desconocidas por mi muchas gracias compañero abelg
__________________
Todo es Relativo
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
Dos instancias de SQL Server parecen ser la misma Faust MS SQL Server 2 21-10-2011 23:13:07
app server y client en misma pc con Windows 7 monaguillex Windows 4 19-04-2011 19:33:27
manipular la misma base de datos en la misma pc DELFIN2000 Conexión con bases de datos 10 23-07-2010 18:34:28
Consulta con dos relaciones a la misma tabla mcrz2 SQL 4 23-05-2006 13:15:25
Unir una tabla consigo misma sitrico SQL 2 19-04-2005 00:06:03


La franja horaria es GMT +2. Ahora son las 20:28:05.


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