Visual Basic.NET - unir dos tablas con columnas separadas sql server

 
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

unir dos tablas con columnas separadas sql server

Publicado por Jorge (17 intervenciones) el 05/08/2021 17:34:25
Buen día, estoy necesitando una ayuda,
tengo una tabla sql server, donde ejecuto un Select con Inner Join, where, order by, etc.
de esta tabla hago 3 consultas donde en el where doy parámetros diferentes,
¿cómo uno los 3 select en una misma tabla, y que me ponga los resultados en columnas separadas?

Ejemplo:
Select Titulo, Sum(campo1) as Campo1X, Sum(campo2) as Campo2X
From Tabla1
where campo1 = 'X'
Group by Titulo

Select Titulo, Sum(campo1) as Campo1Y, Sum(campo2) as Campo2Y
From Tabla1
where campo1 = 'Y'
Group by Titulo

Select Titulo, Sum(campo1) as Campo1Z, Sum(campo2) as Campo2Z
From Tabla1
where campo1 = 'Z'
Group by Titulo

Tabla resultado:
Titulo, Campo1X, Campo2X,Campo1Y, Campo2Y, Campo1Z, Campo2Z

Con una UNION no me funciona ya que une las columnas, también intenté declarar variables y llenarles con el Select, pero me da error.

Quedo agradecido con la ayuda que me sea brindada,
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

unir dos tablas con columnas separadas sql server

Publicado por Phil Rob (1554 intervenciones) el 06/08/2021 16:32:53
Hola,

Existen errores en tus consultas.

Intentas de calcular SUM(campo1) WHERE campo1 = 'X'.
Si campo1 es numérico, no es escrito bien el WHERE.
Si campo1 es de tipo Text, no es posible de calcular SUM.

Pienso que este debe ser Titulo en el WHERE.

Mas, como existe varias títulos, este es difícil de mostrar los resultados en el formato : Titulo, Campo1X, Campo2X,Campo1Y, Campo2Y, Campo1Z, Campo2Z

Quizá que los resultados deberían ser como esta :

SumCampo


...
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

unir dos tablas con columnas separadas sql server

Publicado por Jorge (17 intervenciones) el 06/08/2021 18:17:05
Hola buen día, gracias por la respuesta, te comento que en el ejemplo las variables X, Y y Z, representan valores numéricos.

Los select por separados me funcinan a la perfección, claro que son mucho más complejos que el ejemplo, incluyendo varios Inner Join y where entre varias tablas.

Incluso si le pongo UNION, también me funciona quitando los Order by,
pero como comentaba no me muestra la consulta en la forma que necesito, sinó con las columnas fusionadas.
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

unir dos tablas con columnas separadas sql server

Publicado por Phil Rob (1554 intervenciones) el 06/08/2021 18:46:57
No comprendo bien tu imagen ...
Como es posible que SUM(Campo) da 10 cuando X = 10 ...

Puedes envias la tabla con los datos que dan los resultados del imagen ?
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

unir dos tablas con columnas separadas sql server

Publicado por Jorge (17 intervenciones) el 06/08/2021 21:53:45
Esta es más menos la estructura que tengo, más claro necesito separar en cada tienda el valor por un Tipo de Venta diferente,
utilizo CASE me está dando un error con el GROUP BY:
Column 'Tienda.nombre' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

Ejemplo:
NombreTienda ValorVentaContado ValorVentaCheque
tienda1 100 300
tienda2 200 50

SELECT TOP (1000) Tienda.nombre as NombreTienda,
CASE WHEN TablaVentas.TipoVenta='AA' THEN SUM(Valor) END AS Valor1,
CASE WHEN TablaVentas.TipoVenta='BB' THEN SUM(Valor) END AS Valor2,

FROM TablaVentas Inner Tienda on TabaVentas.IDTienda = Tienda.IDTienda
Inner Join
Inner Join
Inner Join
Inner Join
WHERE TablaVentas.PeriodoVenta='202108' and

GROUP BY Tiena.nombre
--ORDER BY SUM(Valor) DESC
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

unir dos tablas con columnas separadas sql server

Publicado por Phil Rob (1554 intervenciones) el 06/08/2021 22:27:07
Ok...
Intentaré de comprender mañana.
Aquí, ahora, es la 22h30'. Pronto dormir ...
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

unir dos tablas con columnas separadas sql server

Publicado por Jorge (17 intervenciones) el 06/08/2021 22:49:30
Muchas gracias amigo, igual te dejo la otra opción que he intentado pero igual me da error la sentencia CASE con GROUP BY, si le quito el GROUP BY me funciona bien pero sin agrupar los valores.


SELECT TOP (1000) Tienda.nombre as NombreTienda,
CASE TablaVentas.TipoVenta
WHEN 'AA'
THEN Valor
END AS Valor1,
CASE TablaVentas.TipoVenta
WHEN 'BB'
THEN Valor
END AS Valor2,
CASE TablaVentas.TipoVenta
WHEN 'CC'
THEN Valor
END AS Valor3
FROM TablaVentas Inner Tienda on TabaVentas.IDTienda = Tienda.IDTienda
Inner Join
Inner Join
WHERE TablaVentas.PeriodoVenta='202108' and
--GROUP BY Tienda.nombre
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

unir dos tablas con columnas separadas sql server

Publicado por Jorge (17 intervenciones) el 06/08/2021 23:17:58
Amigo ya encontré el error que estaba teniendo con la sentencia GROUP BY, en el momento de hacer la suma agrupada, dejo para alguien más que tenga la duda.

sum(CASE TablaVentas.TipoVenta
WHEN 'AA'
THEN Valor
END) AS Valor1,

Igual muchas gracias por la atención.
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

unir dos tablas con columnas separadas sql server

Publicado por Phil Rob (1554 intervenciones) el 07/08/2021 08:52:07
Hola,

He dormido bien y pienso tener la buena idea ...

Este es mi tabla con los datos :
TablaVentas

Este el codigo de la consulta :
1
2
3
4
SELECT Tiendas, SUM(Contado) AS Contados, SUM(Cheque) AS Cheques
FROM TablaVentas
GROUP BY Tiendas
ORDER BY Tiendas;

Este es el resultado de la consulta :
ResultadoConsulta

Espero haber comprendido bien la pregunta.

Que tenga un buen día ...
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

unir dos tablas con columnas separadas sql server

Publicado por Phil Rob (1554 intervenciones) el 07/08/2021 15:26:35
Continuación ...

En este caso, no es necesario de escribir ORDER BY Tiendas.

Esta consulta es suficiente :
1
2
3
SELECT Tiendas, SUM(Contado) AS Contados, SUM(Cheque) AS Cheques
FROM TablaVentas
GROUP BY Tiendas;

...
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

unir dos tablas con columnas separadas sql server

Publicado por Jorge Leyva (17 intervenciones) el 08/08/2021 00:59:11
Listo amigo, quedo bien agradecido, muy atento.

Saludos,
JorgeL.
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