SQL - Sumar columnas que tengan dos campos iguales en SQL

 
Vista:

Sumar columnas que tengan dos campos iguales en SQL

Publicado por Enzo Gómez (1 intervención) el 22/10/2016 22:20:03
¡Hola amigos!, es la primera vez que hago una consulta en este foro y quería ver si amablemente podían despejar mis dudas...

Hago un bachillerato tecnológico, estoy en segundo grado y estoy aprendiendo a utilizar SQL Server y las consultas las aplicamos en Java (Utilizando Eclipse Neon)

Tengo un caso donde poseo una tabla "RegistrosVentas" con un monto y una fecha, ejemplo:

Monto | Fecha
104 | 2016/10/21
122 | 2016/10/22
102 | 2016/10/23
101 | 2016/10/22

Lo que busco es hacer una consulta en la cual se muestre el monto total por día, mes y año.
Logre ordenarlos por día, mes y año, pero no hacer que se sumen los montos.

Mi consulta fue la siguiente:

SELECT Monto, DAY (Fecha) as DIA, MONTH (Fecha) as MES, YEAR (Fecha) as AÑO
FROM RegistrosVentas
ORDER BY DIA, MES, AÑO;

Y su resultado:

Monto | Dia |Mes |Año
104 |21 |10 |2015
122 |22 |10 |2016
101 |22 |10 |2016
102 |23 |10 |2018

El resultado de la consulta que busco es:

Monto |Dia |Mes |Año
104 |21 |10 |2015
223 |22 |10 |2016
102 |23 |10 |2018

Les agradezco si me ayudan a despejar mis dudas.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Sumar columnas que tengan dos campos iguales en SQL

Publicado por Isaias (1921 intervenciones) el 24/10/2016 18:42:27
Enzo, su consulta es muy basica y la respuesta tambien:

1
2
3
SELECT Fecha, SUM(Monto) as Total
FROM  RegistrosVentas
group by Fecha

¿Para que quiere descomponer la fecha en DIA, MES, AÑO?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Sumar columnas que tengan dos campos iguales en SQL

Publicado por Fanática (6 intervenciones) el 04/12/2021 15:57:46
Buenos días

Mi caso es similar sin embargo tengo la siguiente tabla:

tabla


necesito crear una columna adicional (TOTAL_PRORROGA) la cual debe contener la siguiente información:

* Si la columna PRORROGA es NULL , entonces TOTAL_PRORROGA es igual a lo que contiene el campo DIAS_DE_INCAPACIDAD

* Si la columna PRORROGA ES = 'X', entonces TOTAL_PRORROGA es igual a lo que contiene la fila anterior de la columna TOTAL_PRORROGA más lo que contiene la columna DIAS_DE_INCAPACIDAD.

El resultado debe quedar de la siguiente manera:

TABLA2

Agradezco enormemente si por favor me pueden ayudar con esta consulta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Sumar columnas que tengan dos campos iguales en SQL

Publicado por Isaias (1921 intervenciones) el 04/12/2021 16:33:47
Es parecido a calcular un SALDO?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Sumar columnas que tengan dos campos iguales en SQL

Publicado por Fanática (6 intervenciones) el 04/12/2021 16:41:51
Es sumar lo que contiene X de lo contrario siga con el valor de la fila anterior
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Sumar columnas que tengan dos campos iguales en SQL

Publicado por Isaias (1921 intervenciones) el 04/12/2021 16:44:30
Por eso, es como calcular un SALDO de inventarios, la "X" o NULL representa si es "ENTRADA" o "SALIDA"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Sumar columnas que tengan dos campos iguales en SQL

Publicado por Fanática (6 intervenciones) el 04/12/2021 17:16:15
te agradezco si tienes un código de ejemplo

Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Sumar columnas que tengan dos campos iguales en SQL

Publicado por Isaias (1921 intervenciones) el 04/12/2021 17:38:38
Adáptalo a tus necesidades, si no logras hacerlo, me dices y te ayudo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
drop table #Tmp
Create Table #Tmp(
Fecha_Hora smalldatetime,
No_Comprobante int,
No_Linea smallint,
Lote int,
Pcb smallint,
Pedido smallint,
Ingreso smallint,
Egreso smallint,
Saldo smallint
)
go
 
Insert into #Tmp values('2005-05-02 01:15:00',4,1,21,6,334,167,0,0)
Insert into #Tmp values('2005-05-03 15:07:10',5,1,29,6,167,167,0,0)
Insert into #Tmp values('2005-07-01 12:25:15',6,1,12,6,200,50,0,0)
Insert into #Tmp values('2005-07-01 21:05:52',25,1,1,6,200,0,140,0)
Insert into #Tmp values('2005-07-02 21:05:52',25,1,1,6,200,9,0,0)
Insert into #Tmp values('2005-07-03 21:05:52',25,1,1,6,200,0,140,0)
Insert into #Tmp values('2005-07-04 21:05:52',25,1,1,6,200,100,0,0)
Insert into #Tmp values('2005-07-05 21:05:52',25,1,1,6,200,0,150,0)
Insert into #Tmp values('2005-07-06 21:05:52',25,1,1,6,200,20,0,0)
Insert into #Tmp values('2005-07-07 21:05:52',25,1,1,6,200,0,20,0)
Insert into #Tmp values('2005-07-08 21:05:52',25,1,1,6,200,100,0,0)
Insert into #Tmp values('2005-07-09 21:05:52',25,1,1,6,200,0,20,0)
go
 
select
        a.fecha_hora,
        a.ingreso,
        a.egreso,
        sum(b.ingreso - b.egreso) as saldo
from
        #Tmp as a
        inner join
        #Tmp as b
        on b.Fecha_Hora <= a.Fecha_Hora
group by
        a.fecha_hora,
        a.ingreso,
        a.egreso
order by
        1 asc
go
 
drop table tmp
go
 
Si este calculo lo quieres hacer por producto, entonces debes agregar una
condicion mas al "inner join", que es:
 
a.product_id = b.productid
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Sumar columnas que tengan dos campos iguales en SQL

Publicado por Fanática (6 intervenciones) el 04/12/2021 18:31:03
Muchas gracias por tu colaboración,

Con el codigo que me enviaste como puedo poner el condicional que mientras ID_AFILIADO sea igual y PRORROGA sea igual a X sume la fila anterior mas lo que trae la columna DIAS_PRORROGA, de lo contrario deje lo que trae la fila anterior.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Sumar columnas que tengan dos campos iguales en SQL

Publicado por Fanática (6 intervenciones) el 04/12/2021 20:54:08
Muchas gracias por tu colaboración,

Con el codigo que me enviaste como puedo poner el condicional que mientras ID_AFILIADO sea igual y PRORROGA sea igual a X sume la fila anterior mas lo que trae la columna DIAS_PRORROGA, de lo contrario deje lo que trae la fila anterior.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Sumar columnas que tengan dos campos iguales en SQL

Publicado por Isaias (1921 intervenciones) el 09/12/2021 15:38:47
Hola, para no teclear mas codigo, ¿puedes mandarme una prueba de tus registros?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Sumar columnas que tengan dos campos iguales en SQL

Publicado por Fanática (6 intervenciones) el 07/12/2021 16:55:00
Buenos dias

Por favor alguien me puede ayudar, para obtener el resultado de TOTAL_PRORROGA tengo el siguiente codigo:

CASE PRORROGA
WHEN 'N' THEN
H.DIAS_DE_INCAPACIDAD
WHEN 'X' THEN
SUM(SUM(H.DIAS_DE_INCAPACIDAD))
OVER
(PARTITION BY H.ID_AFILIADO ORDER BY H.ID_AFILIADO ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
ELSE 0
END
AS TOTAL_PRORROGA


Sin embargo este código me suma todos los DIAS_DE_INCAPACIDAD y no me muestra como lo requiero en la ultima imagen de esta publicación, agradezco si por favor alguien me puede ayudar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar