SQL - Sumar registros en una consulta con varias columnas

 
Vista:
sin imagen de perfil

Sumar registros en una consulta con varias columnas

Publicado por Malow (19 intervenciones) el 29/10/2015 16:59:00
Buenas tardes, quería preguntarles acerca de una consulta SQL Server que necesito llevar a cabo.
Tengo una tabla llamada TEV donde están todos los elementos que quiero analizar. TEV se configura en varias columnas como el Id_Genérico, Id_Producto, Id_Elemento, Valor y Características.
TEV: Id_ Genérico / Id_ Producto / Id_Elemento / Valor / Características
1250 1 10 500 Bebida Fría
1250 2 11 100 Verdura Verde
1250 3 12 200 Fruta natural
1250 1 13 300 Bebida Caliente
1250 3 14 1200 Fruta congelada
Por otro lado, tengo una tabla llamada TR en la que están los productos sin repetir los elementos, es decir:
TR: Id_ Genérico / Id_ Producto / Id_Elemento / Valor / Características
1250 1 10 NULL NULL
1250 2 11 NULL NULL
1250 3 12 NULL NULL
Necesitaría realizar una consulta en la que me aparezcan sumadas los registros de varias columnas que se repiten en TEV y a parte me salgan datos de otras tablas que no tienen que ver (este último punto lo se llevar a cabo). Algo tal que así:
Id_Genérico / Id_ Producto / Id_Elemento / Valor / Características / T2.Datos 1 / T3.Datos
1250 1 10 800 Bebida Fría y Bebida Caliente… ETC
1250 2 11 100 Verdura Verde… ETC
1250 3 12 1400 Fruta natural y Fruta congelada… ETC

Muchísimas gracias!
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
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Sumar registros en una consulta con varias columnas

Publicado por leonardo_josue (1173 intervenciones) el 29/10/2015 17:14:22
Hola Malow.

¿Con qué BD's estás trabajando? Cada motor de BD's maneja funciones particulares. Por ejemplo, para hacer lo que quieres con MySQL puedes utilizar la función GROUP_CONCAT.

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
mysql> SELECT * FROM tev;
+-------------+-------------+-------------+-------+-----------------+
| Id_Generico | Id_Producto | Id_Elemento | Valor | Caracteristicas |
+-------------+-------------+-------------+-------+-----------------+
|        1250 |           1 |          10 |   500 | Bebida Fría     |
|        1250 |           2 |          11 |   100 | Verdura Verde   |
|        1250 |           3 |          12 |   200 | Fruta natural   |
|        1250 |           1 |          13 |   300 | Bebida Caliente |
|        1250 |           3 |          14 |  1200 | Fruta congelada |
+-------------+-------------+-------------+-------+-----------------+
5 rows in set (0.00 sec)
 
mysql> SELECT
    ->   id_generico,
    ->   id_producto,
    ->   SUM(valor),
    ->   GROUP_CONCAT(caracteristicas) caracteristicas
    -> FROM tev
    -> GROUP BY id_generico, id_producto;
+-------------+-------------+------------+-------------------------------+
| id_generico | id_producto | SUM(valor) | caracteristicas               |
+-------------+-------------+------------+-------------------------------+
|        1250 |           1 |        800 | Bebida Fría,Bebida Caliente   |
|        1250 |           2 |        100 | Verdura Verde                 |
|        1250 |           3 |       1400 | Fruta natural,Fruta congelada |
+-------------+-------------+------------+-------------------------------+
3 rows in set (0.00 sec)

dependiendo del motor de BD's será la forma en que lo puedes hacer.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Sumar registros en una consulta con varias columnas

Publicado por Malow (19 intervenciones) el 30/10/2015 11:40:16
Muchas gracias Leo, me ha funcionado perfectamente! Tengo que consultar otra cosa, no soy informático y me he metido en este mundillo de una manera un poco amateur. Me preguntas que motor utilizo y no entiendo muy bien a que te refieres con eso. Siento la ignorancia.

De nuevo mil gracias! un saludo.
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: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Sumar registros en una consulta con varias columnas

Publicado por leonardo_josue (1173 intervenciones) el 30/10/2015 15:46:58
Hola de nuevo Malow... ´

La pregunta era simplemente qué manejador de BD's (o DBMS en inglés) estás manejando... puede ser Oracle, MySQL, SQL Server, PostgreSQL, MariaDB, Firebird y/o un largo etcétera...

Todos estos motores de BD's se basan en SQL como lenguaje de consultas, sin embargo la sintaxis y las funciones que maneja cada uno de ellos es distinta, así, como te mencionaba, la función GROUP_CONCAT sólo funciona en MySQL, si quisieras utilizarla en cualquier otro no funcionaría y marcaría error, (excepto en MariaDB que es un clon).

Este foro de consultas es de SQL en general, por lo tanto siempre pedimos que se mencione también con que BD's estás trabajando, para poder dar una respuesta mas adecuada.

Saludos
Leo.
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 registros en una consulta con varias columnas

Publicado por Malow (19 intervenciones) el 30/10/2015 15:51:20
Muchas gracias Leo! Estoy usando SQL Server. Lo tendré en cuenta para indicarlo en futuras consultas.
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