现有一个查询出来的结果如下
姓名 时差 类型
A 1:01 相关
A 3:23 相关
A 2:09 无关
A 5:14 无关
B 6:03 相关
B 2:21 无关
B 3:01 相关
B 4:55 无关
显示为
姓名 相关 无关
A 4:24 7:23
B 9:04 7:16
谢谢大家了!!
------解决方案--------------------
select 姓名 , 类型 , count(*) 数量 from tb group by 姓名 , 类型
------解决方案--------------------
declare @a table(姓名 varchar(10), 时差 varchar(10), 类型 varchar(10))
insert @a select 'A ' , '1:01 ' , '相关 '
union all select 'A ' , '3:23 ' , '相关 '
union all select 'A ' , '2:09 ' , '无关 '
union all select 'A ' , '5:14 ' , '无关 '
union all select 'B ' , '6:03 ' , '相关 '
union all select 'B ' , '2:21 ' , '无关 '
union all select 'B ' , '3:01 ' , '相关 '
union all select 'B ' , '4:55 ', '无关 '
select 姓名,
相关=convert(varchar(10),dateadd(minute, sum(case when 类型= '相关 ' then datediff(minute, '00:00:00 ',时差) end), '00:00:00 '),108),
无关=convert(varchar(10),dateadd(minute, sum(case when 类型= '无关 ' then datediff(minute, '00:00:00 ',时差) end), '00:00:00 '),108)
from @a
group by 姓名
------解决方案--------------------
create table t2(姓名 varchar(50),时差 varchar(50), 类型 varchar(50))
insert into t2 select 'A ', '1:01 ', '相关 '
UNION ALL SELECT 'A ' , '3:23 ', '相关 '
UNION ALL SELECT 'A ' , '2:09 ' , '无关 '
UNION ALL SELECT 'A ' , '5:14 ' , '无关 '
UNION ALL SELECT 'B ' , '6:03 ' , '相关 '
UNION ALL SELECT 'B ' , '2:21 ' , '无关 '
UNION ALL SELECT 'B ' , '3:01 ' , '相关 '
UNION ALL SELECT 'B ', '4:55 ', '无关 '
select 姓名,(cast(sum(cast(substring(时差,1,charindex( ': ',时差)-1) as int)) as varchar)
+ ': '+
cast(sum(cast(substring(时差,charindex( ': ',时差)+1,len(时差)-charindex( ': ',时差)) as int)) as varchar)) as '时间 ',类型
from t2 group by 姓名,类型 order by 姓名