导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

查询分组问题

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

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

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


多谢多谢
...全文
3 点赞 收藏 4
写回复
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','')
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告