sql组只有一列

时间:2018-06-14 12:32:50

标签: sql linq

我已经阅读了很多答案,但找不到答案。我怎么能只用一列“代码”在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

5 个答案:

答案 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