一个会议通知模块,涉及4个表
表1,会议表:t_Meeting
meeting_id subject begin_time end_time room_id
1 会议1 2013-12-10 10:00 2013-12-10 10:00 1
2 会议2 2013-12-10 14:00 2013-16-10 10:00 2
表2,会议室表:t_Room
room_id room_name
1 第一会议室
2 第二会议室
表3,参会部门表:t_MeetingDep
meeting_id dep_id
1 1
1 2
2 2
2 4
表4,部门表:
dep_id dep_name
1 财务部
2 信息部
3 综合部
4 市场部
希望得到如下结果
会议编号 会议名称 会议室 参会部门 开始时间 结束时间
1 会议1 第一会议室 财务部,信息部 2013-12-10 10:00 2013-12-10 10:00
2 会议2 第二会议室 信息部,市场部 2013-12-10 14:00 2013-16-10 10:00
请问该如何写sql来实现,谢谢!
------解决方案--------------------
FOR XML PATH('')
合并行!
应该就这一个技术点吧....
------解决方案--------------------
select distinct
m.meeting_id 会议编号,
m.subject 会议名称,
r.room_name 会议室,
stuff(
(select ','+md.dep_name
from t_MeetingDep md
inner join 部门表 d
on d.dep_id = md.dep_id
where r.meeting_id = md.meeting_id
for xml path('')
),1,1,''
) as 参会部门,
m.begin_time 开始时间,
m.end_time 结束时间
from t_Meeting m
inner join t_Room r
on m.room_id = r.room_id
------解决方案--------------------
----------------------------------------------------------------
-- Author :DBA_Huangzj(發糞塗牆)
-- Date :2013-12-11 14:57:21
-- Version:
-- Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)
-- Dec 28 2012 20:23:12
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[t_Meeting]