首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL分组依据

问SQL分组依据
EN

Stack Overflow用户
提问于 2009-02-25 15:41:29
回答 5查看 761关注 0票数 4

如果我有一组记录

代码语言:javascript
复制
name    amount    Code
Dave    2         1234
Dave    3         1234
Daves   4         1234

我希望这是基于代码和名称的分组,但最后一行的名称中有一个拼写错误,所以这个不会分组。

将这些分组的最佳方式是什么:

Dave/Daves 9 1234

EN

回答 5

Stack Overflow用户

发布于 2009-02-25 15:46:27

作为一般规则,如果数据错误,您应该修复数据。

但是,如果您无论如何都要做报告,您可以提出另一个分组标准,例如,LEFT( name,4)将对名称的前4个字符执行分组。

您可能还希望将CASE语句视为一种方法(CASE WHEN name = 'Daves‘THEN 'Dave’ELSE name),但我真的不喜欢这种方法,特别是如果您打算将此方法用于除一次性报告之外的其他任何事情。

票数 6
EN

Stack Overflow用户

发布于 2009-02-25 15:45:53

如果这是一种变通方法,请尝试

代码语言:javascript
复制
SELECT cname, SUM(amount)
FROM (
  SELECT CASE WHEN NAME = 'Daves' THEN 'Dave' ELSE name END AS cname, amount
  FROM mytable
)
GROUP BY cname

这个if课程将只处理这种情况。

票数 5
EN

Stack Overflow用户

发布于 2009-02-25 15:45:42

修复打字错误?否则,对名称进行分组将创建一个新的组。

修复你的数据应该是你的首要任务,而不是试图设计出“解决”它的方法。

还应该注意的是,如果您的数据中有这个单一的拼写错误,那么您很可能会有(或在未来的某个时候)更多的扭曲数据,这些数据将不能整洁地适合您的代码,这将迫使您发明越来越多的“变通办法”来处理它,而您应该专注于数据的整洁。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/586522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档