SQL问题,对某字段的前一部分(每记录的此长度不一样)相同的进行分类汇总,大力帮忙!!

huayuxing 2003-10-23 03:53:52
如下:
Table1,
field(field1 varchar(50),field2 number)
field1,field2
aa bb ,123
aa cc ,333
aa bb dd,343
bb ee,332
bb ff,333
bb ee 332
field1中有空格,如何在一条SQL语句内对Field2进行分类汇总
对第一部分分类汇总,得到如下
filed1 sum(field2)
aa ,799
bb ,996
对第二部分分类汇总如下:
field1,sum(field2)
aa bb,466
aa cc,333

...全文
59 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengdali 2003-10-24
  • 打赏
  • 举报
回复
不懂你的意思。你的字符串一定有规律的呀。


create function getstrofindex (@str varchar(8000),@index int =0)
returns varchar(8000)
as
begin
declare @str_return varchar(8000)
declare @start int
declare @next int
declare @location int
select @start =1
select @next =1
select @location = charindex(' ',@str,@start)
while (@location <>0 and @index > @next )
begin
select @start = @location +1
select @location = charindex(' ',@str,@start)
select @next =@next +1
end
if @location =0 select @location =len(@str)+1
select @str_return = substring(@str,@start,@location -@start)
if (@index <> @next ) select @str_return = ''
return @str_return
end
go
select dbo.getstrofindex('1 2 4',3)
huayuxing 2003-10-24
  • 打赏
  • 举报
回复
关键是最后没有空格而且空格的格数又是不定的,理论上也可能有无穷大,基本上是二到四个空格,我用left(field1,charIndex('',field1,charIndex('',field1))这样下去,到了最后一个没有空格的时候他就找不到字符串了
pengdali 2003-10-23
  • 打赏
  • 举报
回复
--对第一部分分类汇总,得到如下

select left(field1,charindex(' ',field1)-1) field1,sum(field2) from table1 group by left(field1,charindex(' ',field1)-1)


--对第二部分分类汇总如下

select right(field1,len(field1)-charindex(' ',field1)) field1,sum(field2) from table1 group by right(field1,len(field1)-charindex(' ',field1))
huayuxing 2003-10-23
  • 打赏
  • 举报
回复
谢谢CrazyFor(吃素的鼹鼠) ( ) 信誉:267 的帮助!!!
pengdali 2003-10-23
  • 打赏
  • 举报
回复
--对第一部分分类汇总,得到如下
select left(field1,charindex(' ',field1)) field1,sum(field2) from table1 group by left(field1,charindex(' ',field1))
--对第二部分分类汇总如下
select right(field1,len(field1)-charindex(' ',field1)) field1,sum(field2) from table1 group by right(field1,len(field1)-charindex(' ',field1))
CrazyFor 2003-10-23
  • 打赏
  • 举报
回复
select REVERSE(left(field1,charindex(' ' , REVERSE(field1))-1)),sum(REVERSE(field2)) from 表 group by REVERSE(left(field1,charindex(' ' , REVERSE(field1))-1)) ---后部分组
CrazyFor 2003-10-23
  • 打赏
  • 举报
回复
select left(field1,charindex(' ' , field1)-1),sum(field2) from 表 group by left(field1,charindex(' ' , field1)-1) ---前部分组
huayuxing 2003-10-23
  • 打赏
  • 举报
回复
不是用UNIN的方法有没有啊,我不想用30几个的UNION起来
huayuxing 2003-10-23
  • 打赏
  • 举报
回复
当然每个分类的数量不定,基本上在30个左右,急

34,590

社区成员

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

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