Better solution, without cursors or temp tables
select distinct
s.session_id as spid,
cast( convert(varchar, dateadd(second, datediff(ss, s.last_request_start_time, getdate()),'' ), 108) as varchar(8))[delta],
r.cpu_time / nullif(datediff(ss, s.last_request_start_time, getdate()),0) [cpu/sec],
(r.reads + r.writes) / nullif(datediff(ss, s.last_request_start_time, getdate()),0) [diskio/sec],
isnull(w.blocking_session_id, 0) as blockedby,
s.host_name,
s.login_name as login,
db_name(r.database_id) as dbname,
s.program_name,
s.client_interface_name,
s.status,
r.cpu_time as cpu,
r.granted_query_memory as memory,
r.reads,
r.writes,
r.logical_reads,
r.row_count,
cast(r.percent_complete as dec(4,1)) as pct_complete,
r.command,
t.text,
c.client_net_address
from sys.dm_exec_sessions s
left join sys.dm_os_waiting_tasks w on s.session_id = w.session_id
left join sys.dm_exec_requests r on s.session_id = r.session_id
left join sys.dm_exec_connections c on s.session_id = c.session_id
outer apply sys.dm_exec_sql_text(plan_handle) t
where s.status != 'sleeping' -- // no inactive processes
and s.session_id != @@spid