I'm not sure if this is considered simpler. 😉
SELECT duration, SUM(iduration)
FROM (
SELECT duration,
Item * CASE ROW_NUMBER() OVER( PARTITION BY duration ORDER BY ItemNumber DESC)
WHEN 3 THEN 3600
WHEN 2 THEN 60
ELSE 1 END iduration
FROM #tmp x
CROSS APPLY dbo.PatternSplitCM( duration, '%[0-9]%')
WHERE Matched = 1) x
GROUP BY duration
ORDER BY duration
You can read about dbo.PatternSplitCM in here: http://www.sqlservercentral.com/articles/String+Manipulation/94365/