如果我有一组记录
name amount Code
Dave 2 1234
Dave 3 1234
Daves 4 1234我希望这是基于代码和名称的分组,但最后一行的名称中有一个拼写错误,所以这个不会分组。
将这些分组的最佳方式是什么:
Dave/Daves 9 1234
发布于 2009-02-25 15:46:27
作为一般规则,如果数据错误,您应该修复数据。
但是,如果您无论如何都要做报告,您可以提出另一个分组标准,例如,LEFT( name,4)将对名称的前4个字符执行分组。
您可能还希望将CASE语句视为一种方法(CASE WHEN name = 'Daves‘THEN 'Dave’ELSE name),但我真的不喜欢这种方法,特别是如果您打算将此方法用于除一次性报告之外的其他任何事情。
发布于 2009-02-25 15:45:53
如果这是一种变通方法,请尝试
SELECT cname, SUM(amount)
FROM (
SELECT CASE WHEN NAME = 'Daves' THEN 'Dave' ELSE name END AS cname, amount
FROM mytable
)
GROUP BY cname这个if课程将只处理这种情况。
发布于 2009-02-25 15:45:42
修复打字错误?否则,对名称进行分组将创建一个新的组。
修复你的数据应该是你的首要任务,而不是试图设计出“解决”它的方法。
还应该注意的是,如果您的数据中有这个单一的拼写错误,那么您很可能会有(或在未来的某个时候)更多的扭曲数据,这些数据将不能整洁地适合您的代码,这将迫使您发明越来越多的“变通办法”来处理它,而您应该专注于数据的整洁。
https://stackoverflow.com/questions/586522
复制相似问题