查询分组问题

AleexKing 2003-12-24 02:38:36
要给一个表进行分组统计,如下所示

客户代码 客户名称 销量
001 张三1 0
002 张三20 1

其中名称中后面带了数字,统计的时候想以“张三”这样的非数字名字进行销量统计,请问各位该如何分组????


多谢多谢
...全文
19 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
victorycyz 2003-12-24
  • 打赏
  • 举报
回复

上面的 sum(销量) 应该改成: sum(销量)/9
victorycyz 2003-12-24
  • 打赏
  • 举报
回复
错了,对不起。
victorycyz 2003-12-24
  • 打赏
  • 举报
回复
一个笨办法,看后面的高手能不能帮忙优化一下:

select left(客户,charindex('0',客户)-1) as 客户,
sum(销量) as 总销量
from
(
select replace(客户名称,'1','0') as 客户,销量
union all
select replace(客户名称,'2','0') as 客户,销量
union all
select replace(客户名称,'3','0') as 客户,销量
union all
select replace(客户名称,'4','0') as 客户,销量
union all
select replace(客户名称,'5','0') as 客户,销量
union all
select replace(客户名称,'6','0') as 客户,销量
union all
select replace(客户名称,'7','0') as 客户,销量
union all
select replace(客户名称,'8','0') as 客户,销量
union all
select replace(客户名称,'9','0') as 客户,销量
) a
group by left(客户,charindex('0',客户)-1)
realgz 2003-12-24
  • 打赏
  • 举报
回复
1、
create function dbo.clear_num
(@input varchaR(255))
RETURNS varchar(255)
as
begin
declare @output varchar(255)
set @output=''
while @input<>''
begin
if isnumeric(left(@input,1))=0
set @output=@output+left(@input,1)
set @input=right(@input,len(@input)-1)
end
return @output
end
go

group by dbo.clear_num( 客户名称)
2、
group by replace(replace(……),'0',','),'1',''……,'9','')

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧