将 SELECT 语句中的所有列添加到 group by 撤消我想要的分组
Posted
技术标签:
【中文标题】将 SELECT 语句中的所有列添加到 group by 撤消我想要的分组【英文标题】:Adding all columns in SELECT statement into group by undoes the grouping I want 【发布时间】:2021-08-21 21:57:16 【问题描述】:我想按供应商_so 分组(这样每个只有 1 行,并且数量只是相加)。这个查询工作得很好:
SELECT supplier_so, sum(CAST(qty AS int)) as qty
FROM table.name
where
item_code like 'XXX%'
and
doc_date = '05/28/2021'
group by supplier_so
但它并没有给我我想要的所有列。当我将我想要的所有列添加到 SELECT 语句中时,它也会让我将它们添加到 GROUP BY 中,并撤消由供应商_so 进行的分组:
SELECT doc_date, doc_no, site, doc_type, supplier_so, item_code, item_description, sum(CAST(qty AS int)) as qty, item_class, source_filename
FROM table.name
where
item_code like 'XXX%'
and
doc_date = '05/28/2021'
group by supplier_so, doc_no, site, doc_type, doc_date, item_code, item_description, qty, item_class, source_filename
order by item_code
【问题讨论】:
【参考方案1】:您显然对每个供应商都有多个价值观。解决此问题的一种方法是使用聚合函数:
select supplier_so, max(doc_date), max(doc_no), . . .
sum(CAST(qty AS int)) as qty
FROM table.name
where item_code like 'XXX%' and
doc_date = '05/28/2021'
group by supplier_so
order by max(item_code)
【讨论】:
成功了,谢谢!您能解释一下为什么我的查询会撤消supplier_so group by 吗? @Helpplease 。 . .您的第二个查询工作正常。 . .您刚刚向group by
添加了一堆其他列,所以它没有达到您想要的效果。以上是关于将 SELECT 语句中的所有列添加到 group by 撤消我想要的分组的主要内容,如果未能解决你的问题,请参考以下文章
使用 group_by 将第一个创建记录的标识符添加到 select 语句