Me gustaría tener dos columnas que muestren la suma de los diferentes artículos comprados. Por ejemplo
Nombre de la BD: Compras
Identificación del cliente
Camisa
123
Rojo
123
Rojo
123
Rojo
123
Azul
123
Azul
El resultado que me gustaría obtener es el siguiente
Identificación del cliente
Rojo
Azul
123
3
2
Puedo crear una columna pero tengo dificultades para crear dos columnas diferentes.
Gracias.
------------------------------------
Simplemente use agregación condicional. Esto es particularmente simple en MySQL:
select customerid,
sum(shirt = 'Red') as red,
sum(shirt = 'Blue') as blue
from t
group by customerid;
Aquí hay un violín db<>.
Lo anterior utiliza un atajo de MySQL. El caso de uso de sintaxis general:
select customerid,
sum(case when shirt = 'Red' then 1 else 0 end) as red,
sum(case when shirt = 'Blue' then 1 else 0 end) as blue
from t
group by customerid;
5
Ok, eso es lo que intenté, pero me dice que hay una sintaxis incorrecta cerca de ')' pero mi código es idéntico al tuyo.
- irishninja002
26/03/2021 a las 22:15
1
@irishninja002. . . Agregué un db<>fiddle con ese código exacto y funcionó.Está bien. ¿Estás seguro de que estás utilizando MySQL?
- Gordon Linoff
26/03/2021 a las 22:27
gracias @Gordon Linoff. Estaba usando el servidor Microsoft SQL. La consulta ampliada realmente funcionó.
- irishninja002
26/03/2021 a las 22:45
@irishninja002. . . ¿Hay alguna razón por la que no aceptó esta respuesta?
- Gordon Linapagado
29/03/2021 a las 22:52
Lo siento si lo hice; esta es solo la segunda vez que uso Stackoverflow. lo que proporcionaste fue muy útil. Pensé que había hecho clic en la marca de verificación para aceptarlo.
- irishninja002
30 de marzo de 2021 a las 23:54
------------------------------------
Tal vez deberías completar la declaración de suma con eso:
select customerid,
sum(case when shirt = 'Red' Then 1 Else 0 End) as red,
sum(case when shirt = 'Blue' Then 1 Else 0 End) as blue
from t
group by customerid;