求 SQL 语句解决方法

求 SQL 语句
各位大侠好!麻烦给看一下以下语句改如何写

姓名  年龄  工作  小时
张三  33    裁纸   2
李四  22    打浆   3
张三  33    开机   1
张三  33    卷纸   2
李四  22    开机   1

得到以下结果:
姓名  年龄  工作                  小时
张三  33    裁纸|2|开机|1|卷纸|2   2
李四  22    打浆|3|开机|1          3

就是把相同姓名的人的工作合到一起,并且后面跟上小时。

谢谢大家了!
------解决方案--------------------
----------------------------------------------------------------
-- Author  :DBA_HuangZJ(发粪涂墙)
-- Date    :2014-03-06 13:41:08
-- Version:
--      Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) 
-- Apr  2 2010 15:48:46 
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
--
----------------------------------------------------------------
--> 测试数据[huang]
if object_id('[huang]') is not null drop table [huang]
go 
create table [huang]([姓名] nvarchar(4),[年龄] int,[工作] nvarchar(4),[小时] int)
insert [huang]
select N'张三',33,N'裁纸',2 union all
select N'李四',22,N'打浆',3 union all
select N'张三',33,N'开机',1 union all
select N'张三',33,N'卷纸',2 union all
select N'李四',22,N'开机',1
--------------生成数据--------------------------

select a.[姓名],A.[年龄],
stuff((select '
------解决方案--------------------
'+[工作]+'
------解决方案--------------------
'+CAST([小时] AS NVARCHAR) from [huang] b 
       where b.[姓名]=a.[姓名] and b.[年龄]=a.[年龄] 
       for xml path('')),1,1,'') N'工作小时'
from [huang] a
group by  a.[姓名],A.[年龄]

----------------结果----------------------------
/* 
姓名   年龄          工作小时
---- ----------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
张三   33          裁纸
------解决方案--------------------
2
------解决方案--------------------
开机
------解决方案--------------------
1
------解决方案--------------------
卷纸
------解决方案--------------------
2
李四   22          打浆
------解决方案--------------------
3
------解决方案--------------------
开机
------解决方案--------------------
1

*/

------解决方案--------------------
2000和非2000的都有了
----------------------------------------------------------------
-- Author  :DBA_HuangZJ(发粪涂墙)
-- Date    :2014-03-06 13:41:08
-- Version:
--      Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) 
-- Apr  2 2010 15:48:46 
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
--
----------------------------------------------------------------
--> 测试数据[huang]
if object_id('[huang]') is not null drop table [huang]
go 
create table [huang]([姓名] nvarchar(4),[年龄] int,[工作] nvarchar(4),[小时] int)
insert [huang]
select N'张三',33,N'裁纸',2 union all
select N'李四',22,N'打浆',3 union all
select N'张三',33,N'开机',1 union all
select N'张三',33,N'卷纸',2 union all
select N'李四',22,N'开机',1
--------------生成数据--------------------------
--2005
select a.[姓名],A.[年龄],
stuff((select '
------解决方案--------------------
'+[工作]+'
------解决方案--------------------
'+CAST([小时] AS NVARCHAR) from [huang] b 
       where b.[姓名]=a.[姓名] and b.[年龄]=a.[年龄] 
       for xml path('')),1,1,'') N'工作小时'
from [huang] a
group by  a.[姓名],A.[年龄]

--2000
go
if object_id('F_Str') is not null
    drop function F_Str
go
create function F_Str(@Col1 NVARCHAR(30))