我已经阅读了很多答案,但找不到答案。我怎么能只用一列“代码”在sql中对我的表进行分组?我的桌子:
Name Code quantity storename
name1 12345 1 A1
name1 12345 3 A2
name2 9009 40 A1
name2 9009 5 A3
name3 4004 3 A1
我想看看
Name Code quantity storename
name1 12345 4 A1
name2 9009 45 A1
name3 4004 3 A1
答案 0 :(得分:0)
你要展示的是
Select Name,
Code,
Sum(Quantity) as Quantity
Min(Storename) as Storename
From MyTable
Group by Name, Code
你对商店名称的逻辑是什么?我假设最低(第一个值)
答案 1 :(得分:0)
尝试此查询
select Name, Code, count(quantity) asquantity, storename from tablename
group by Code,Name,storename
答案 2 :(得分:0)
这将为显示的输入产生所需的输出。
code
但这是另一个问题,如果这是有用的。名称可能取决于代码? (例如,name
是ID,SpringBootServletInitializer
是产品的名称吗?)如果是,我们在那里不会遇到问题。但总结所有商店的数量,但仅将其与一家商店相关联,可能会产生误导。结果中的商店并不一定具有库存结果中的数量。
答案 3 :(得分:0)
您需要决定如何汇总组中未分组的字段,然后在其上放置聚合。
例如,数据集中有两个与同一代码绑定的存储。如果按代码分组,则必须选择在累计时如何显示商店,通常使用最大值或分钟数。但是,您可能需要在分组中包含Store,因为它似乎是一个非常重要的实体。我将向您展示两个示例,一个在分组中存储,另一个在聚合中。
数量在代码级别汇总。
SELECT
Name,
Code,
CodeQuantity = SUM(Qauntity),
MaxStore = MAX(StoreName)
FROM
MyTable
GROUP BY
Name,
Code
数量在商店层面累计。
SELECT
Name,
Code,
StoreName,
StoreQuantity = SUM(Qauntity)
FROM
MyTable
GROUP BY
Name,
Code,
StoreName
答案 4 :(得分:0)
试试这个(如果重要的话就改变顺序):
SELECT NAME
, SUM(QUANTITY) AS QUANTITY
, code
, storename
FROM example
GROUP BY NAME
, code