select (case when id like 'Raw%' then stuff(id, 1, 3, '') else id end) as id,
sum(total)
from t
group by (case when id like 'Raw%' then stuff(id, 1, 3, '') else id end);
如果要用其他值替换特定值,我建议使用查询内查找表:
select coalesce(v.new_id, t.id) as id, sum(total)
from t left join
(values ('RawApple', 'Apple'),
('RawMango', 'Mango')
) v(id, new_id)
on t.id = v.id
group by coalesce(v.new_id, t.id);
WITH VTE AS(
SELECT *
FROM (VALUES('Apple',10),
('Raw-Apple',10),
('Mango',10),
('Raw-Mango',10))V(ID,Total))
SELECT S.ID,
SUM(V.Total) AS Total
FROM VTE V
CROSS APPLY(VALUES(STUFF(V.ID,1,CHARINDEX('-',V.ID),'')))S(ID)
GROUP BY S.ID;
2条答案
按热度按时间rlcwz9us1#
如果问题是删除前三个字符(如果它们是“原始的”),那么您可以执行以下操作:
如果要用其他值替换特定值,我建议使用查询内查找表:
xxe27gdn2#
如果我们假设水果的名字在前缀后面,前缀以连字符结尾(
-
),然后我们可以使用STUFF
要删除前缀并进行聚合,请执行以下操作:注意,我不会把水果的名字改成复数,因为根据水果的不同,复数是什么。你需要一个字典表来存储水果的复数形式,然后把它连起来。一张这样的table:
注意,这个答案是无效的,因为op移动了目标岗位,因为样本数据不能代表他们的实际数据,但是,我离开这里,因为它可能会帮助未来的用户。