簡體   English   中英

如何根據顏色值對 sql 中的值求和?

[英]how to sum values in sql using case based on color value?

正如我們在顏色列中的圖像中看到的,有紅色和黑色兩個值

我想計算紅色和黑色值Black=3 & Red=7

在此處輸入圖像描述

我的 Sql 查詢

select SPDNO,Cost,Company_Name,Product,Color,
case when Color='Black' then 'sum Black Color' when Color='Red' then 'sum Red Color'
else '' End as ColorResult  
from bike_details where (Color='Red' or Color='Black') and  SPDNO='5000';

我想要的 output 像下面這樣在單行中給出

SPDNO   Cost     Company_Name  ColorSum    Product                                                                                                                       
5000    470000   Memon Motors  3,7         SUPER STAR (SS-70cc)M.C Red,SUPER STAR (SS-70cc)M.C BLack       

任何幫助將不勝感激並提前感謝

您需要 2 個級別的聚合。
這適用於 Mysql:

select t.SPDNO, t.Cost, t.Company_Name, 
       group_concat(t.Product order by t.ColorSum desc), 
       group_concat(t.ColorSum order by t.ColorSum desc)
from (
  select SPDNO, Cost, Company_Name, Product, Color, count(*) ColorSum
  from bike_details 
  where (Color='Red' or Color='Black') and  SPDNO='5000'
  group by SPDNO, Cost, Company_Name, Product, Color
) t
group by t.SPDNO, t.Cost, t.Company_Name

select SPDNO,Cost,Company_Name,Product,Color, SUM(IIF(Color = 'Black', 3, 7)) as ColorResult from bike_details where (Color='Red' or Color='Black') and SPDNO='5000' GROUP BY SPDNO,Cost,Company_Name,Product;

只要您只查看這 2 個 colors,這將起作用,否則您必須做其他事情。

這實質上是使用SUM() function 來對抗IIF() function 的結果。

我剛剛重新閱讀了您的問題,我不確定您是否真的想對顏色值求和。 如果是這樣,您可以刪除 SUM() function:

select SPDNO,Cost,Company_Name,Product,Color, IIF(Color = 'Black', 3, 7) as ColorResult from bike_details where (Color='Red' or Color='Black') and SPDNO='5000' GROUP BY SPDNO,Cost,Company_Name,Product;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM