22,298
社区成员




with cte
as
(SELECT parsename(REPLACE(dh,'-','.'),4) as segment_1,
parsename(REPLACE(dh,'-','.'),3) as segment_2,
parsename(REPLACE(dh,'-','.'),2) as segment_3,
parsename(REPLACE(dh,'-','.'),1) as segment_4,
ys,filenum
FROM T)
select segment_1,segment_2,COUNT(segment_3) as count_3,SUM(ys) as total_ys,SUM(filenum) as total_filenum
from cte
group by segment_1,segment_2
create table test(id int, name varchar(30))
insert into test values
(1,'110-永久2010-0008-001'),(2,'110-永久2010-0008-002'),
(1,'110-永久2010-0008-003'),(2,'110-永久2010-0008-004')
go
-- 用这个方法拆分,汇总你自己来吧
SELECT A.id,
A.name.value('v[1]','varchar(30)') v1,
A.name.value('v[2]','varchar(30)') v2,
A.name.value('v[3]','varchar(30)') v3,
A.name.value('v[4]','varchar(30)') v4
FROM(
SELECT id,
name = CONVERT(xml,'<v>' + REPLACE(name, '-', '</v><v>') + '</v>')
FROM test
)A
go
drop table test