Visual Basic.NET - Select SQL Server varias condiciones

 
Vista:
sin imagen de perfil
Val: 23
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Select SQL Server varias condiciones

Publicado por Jorge (17 intervenciones) el 17/10/2021 00:10:50
Buenos días,
necesito hacer un select de una base devolviendo resultados con las siguientes condiciones:

Ejemplo tabla:
id Periodo Valor1 Valor2
1 202101 10 35
2 202101 20 40
3 202101 30 10
4 202102 35 15
5 202102 50 20
6 202102 15 25

Ejemplo resultado consulta:
MES Resultado 1 Resultado 2
ENERO
FEBRERO =SUMA(Valor1 de 202101) =SUMA(Valor2 de 202101) + SUMA(Valor2 de 202102)

Le tengo algo similar a esto, pero no puedo consolidar en Resultado1 la sumatoria del periodo anterior.
SELECT Periodo,
SUM(Valor1) AS Resultado1
FROM Tabla1
WHERE x
GROUP By Periodo


Quedo atento.
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 Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Select SQL Server varias condiciones

Publicado por Phil Rob (1554 intervenciones) el 17/10/2021 08:43:03
Hola,

Quizá este consulta te gustarás :

1
2
3
SELECT Periodo, SUM(Valor1) AS Resultado1, SUM(Valor2) AS Resultado2
FROM Table1
GROUP BY Periodo;

Buen domingo ...
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
Val: 23
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Select SQL Server varias condiciones

Publicado por Jorge (17 intervenciones) el 17/10/2021 16:24:42
Hola buen día, muchas gracias por la pronta respuesta. Te comento que así no me funciona, ya que necesito condicionar las sumatorias.

yo le condicioné de la siguiente manera:
CASE WHEN Periodo ='202101' THEN SUM(Valor2) ELSE 0 END AS Resultado2

pero de esta forma, la consulta solo me devuleve resultados de los períodos del 202101.


Mas claro, yo necesito en la fila del 202102 o Febrero, mostrar la sumatoria del 202101.

Saludos,
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 Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Select SQL Server varias condiciones

Publicado por Phil Rob (1554 intervenciones) el 17/10/2021 16:58:51
Hola,

Rápidamente con mi Smartphone, una pregunta:
Quieres 12 periodos en el consulta ?
Dice me y miraré más tarde o mañana....
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
Val: 23
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Select SQL Server varias condiciones

Publicado por Jorge (17 intervenciones) el 17/10/2021 17:13:58
si, es para 12 meses y varios años, y siempre tendría que sumar del período anterior en algunas columnas.
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 Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Select SQL Server varias condiciones

Publicado por Phil Rob (1554 intervenciones) el 17/10/2021 18:53:41
No prometo resultados pero voy mirar...
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 Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Select SQL Server varias condiciones

Publicado por Phil Rob (1554 intervenciones) el 18/10/2021 09:41:10
Hola,

Tengo tiempo en la tarde y miraré el problema. Pero, no soy seguro de comprender bien.
Los periodos pueden ser de varios años con 12 meses cada, lo comprendo. Pero entonces, la tablas tiene 12 columnas "Valor1 ... 12 " y los resultados deben haber 12 campos "Resultados1 ... 12" ?

La imagen muestra que tengo con mi consulta de ayer. La tabla tiene Valor1 y Valor2. Los resultados están Resultados1 y Resultados2.

Quizá puedes dar un ejemplo mas grande con los resultados que quieres. .

Gracias por tu respuesta ...


Jorge1
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
Val: 23
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Select SQL Server varias condiciones

Publicado por Jorge Leyva (17 intervenciones) el 18/10/2021 17:50:39
Primero te paso el principal inconveniente que tengo:
Para la columna 1 Fecha, tomando Mayo del 2021, el Resultado 1 sería la suma del valor1 pero del período de Abril del 2021.

estructura-tabla

resultado
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 Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Select SQL Server varias condiciones

Publicado por Phil Rob (1554 intervenciones) el 18/10/2021 18:19:57
Si comprendo mejor, quieres la suma de los valores del mese precedente de este que es seleccionado ?

Intento para este resultado ...
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 Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Select SQL Server varias condiciones

Publicado por Phil Rob (1554 intervenciones) el 18/10/2021 19:16:08
Mira la consulta siguiente que da las sumas por mese.
Cuando ejecutar la consulta con VB.Net, utilizas un DataAdapter que da todos campos del consulta en una DataTable.
Te propongo de tratar con VB la buscada de los valores que quieres en esta DataTable.
La ilustración siguiente muestra las informaciones en Access. Si te gustas, puedo escribir la consulta y la buscada de un mese en VB.Net.
Dice me ...


Jorge2
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
Val: 23
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Select SQL Server varias condiciones

Publicado por Jorge (17 intervenciones) el 18/10/2021 19:47:50
Necesito tomando como ejemplo el mes de Enero 2021, en algunas columnas usar los valores de Diciembre 2020, y en otras usar los valores propios del mes.
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
Val: 23
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Select SQL Server varias condiciones

Publicado por Jorge (17 intervenciones) el 18/10/2021 19:53:47
Claro la otra alternativa sería desde c# trabajar los datos en la Consulta,
pero normalmente creo la Consulta con todo lo que necesito,
y solo le llamo y meto en tabla por un tema de limpieza de código y mantenimiento.

Si no hubiera cómo desde la consulta, ya me tocaría ir consultando por separado los datos e ir metiendo al GridView.
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 Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Select SQL Server varias condiciones

Publicado por Phil Rob (1554 intervenciones) el 18/10/2021 20:30:12
Mi problema es de comparar el mese de la fecha leída con el mese precedente :

1
2
3
4
5
SELECT Month(FECHA) As Mese, SUM(Valor1) As Resultado1, SUM(Valor2) As Resultado2
FROM
Table1
WHERE Month(FECHA) = DatoQuerido
GROUP BY  Month(FECHA)

Con C#, puedes pasar el parámetro "DatoQuerido" a la consulta y obtener los resultados por una mese, con cada ejecución.
De otra manera, con mi consulta anterior, tienes que leer el DataTable par seleccionar los resultados queridos.

No sé que es tu sistema DB : MySql, SQL Server, Access, ... Quizá que tu sistema permite la escritura de procedimientos almacenados. Entonces, debe ser posible de programar con SQL a lugar de C#.

Un comentario : es mejor trabajar con el DataTable y no con el DataGridView. es mas rápido con el DataTable y, si los resultados deben ser mostrados en une DataGridView, es suficiente que el DataSource del DVG igual el DataTable.

Mi ayuda no es muy eficacia aquí ..., lo siento ...
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
Val: 23
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Select SQL Server varias condiciones

Publicado por Jorge (17 intervenciones) el 18/10/2021 22:16:08
Se puede hacer en ambos lados, creo que por vago le hago así, pero si trabajo un 50% en c# y 50 en SQL Server.
Ahora, cuando necesito algo rápido generalmente creo bien elaborada la consulta en SQL Server, lleno el DataTable con la consulta y meto directo al GridView.
Va en dependencia de la necesidad.

Igual quedo bien agradecido.
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