sql: suma diferentes elementos en dos columnas diferentes

CorePress2024-01-24  13

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;

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare