多行合并问题

Mr.Huang…… 2019-07-25 11:46:01
求指点。。。





create table #t1
(
住院号 int,
同组编号 int,
医嘱内容 varchar(50),
给药方法 varchar(20),
频率 varchar(20))


insert into #t1
select 201901,1,'0.9%氯化钠注射液 250ml','静脉输液','qd' union all
select 201901,1,'注射用盐酸氨溴索 30mg','静脉输液','qd' union all
select 201901,1,'地塞米松磷酸钠注射液 5mg','静脉输液','qd' union all
select 201901,2,'0.9%氯化钠注射液 100ml','静脉输液','bid' union all
select 201901,2,'甲钴胺注射液 500ug','静脉输液','bid' union all
select 201901,0,'复方骨肽注射液 30mg','肌肉注射','qd' union all
select 201901,0,'维生素B1注射液 0.1g','肌肉注射','qd' union all
select 201902,1,'0.9%氯化钠注射液 250ml','静脉输液','qd' union all
select 201902,1,'注射用盐酸氨溴索 30mg','静脉输液','qd' union all
select 201902,1,'地塞米松磷酸钠注射液 5mg','静脉输液','qd' union all
select 201902,2,'0.9%氯化钠注射液 100ml','静脉输液','bid' union all
select 201902,2,'甲钴胺注射液 500ug','静脉输液','bid' union all
select 201902,0,'复方骨肽注射液 30mg','肌肉注射','qd' union all
select 201902,0,'维生素B1注射液 0.1g','肌肉注射','qd'


select * from #t1

/*---得到以下结果----
住院号 同组编号 医嘱内容 给药方法 频率
201901 1 0.9%氯化钠注射液 250ml,注射用盐酸氨溴索 30mg,地塞米松磷酸钠注射液 5mg 静脉输液 qd
201901 2 0.9%氯化钠注射液 100ml,甲钴胺注射液 500ug 静脉输液 bid
201901 0 复方骨肽注射液 30mg 肌肉注射 qd
201901 0 维生素B1注射液 0.1g 肌肉注射 qd
201902 1 0.9%氯化钠注射液 250ml,注射用盐酸氨溴索 30mg,地塞米松磷酸钠注射液 5mg 静脉输液 qd
201902 2 0.9%氯化钠注射液 100ml,甲钴胺注射液 500ug 静脉输液 bid
201902 0 复方骨肽注射液 30mg 肌肉注射 qd
201902 0 维生素B1注射液 0.1g 肌肉注射 qd

同组编号为0的行不参与合并

*/
drop table #t1

...全文
65 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
唐诗三百首 2019-07-25
  • 打赏
  • 举报
回复

select 住院号,同组编号,医嘱内容,给药方法,频率
 from (
select a.住院号,a.同组编号,医嘱内容=stuff((select ','+b.医嘱内容 
                                         from #t1 b 
                                         where b.住院号=a.住院号 and b.同组编号=a.同组编号 and b.给药方法=a.给药方法 and b.频率=a.频率
                                         for xml path('')),1,1,''),
       a.给药方法,a.频率
 from #t1 a
 where a.同组编号<>0
 group by a.住院号,a.同组编号,a.给药方法,a.频率
union all
select 住院号,同组编号,医嘱内容,给药方法,频率
 from #t1
 where 同组编号=0) t
 order by 住院号,case when 同组编号=0 then 999999 else 同组编号 end,医嘱内容,给药方法,频率

/*
住院号         同组编号        医嘱内容                                                                                                 给药方法                 频率
----------- ----------- ---------------------------------------------------------------------------------------------------- -------------------- --------------------
201901      1           0.9%氯化钠注射液 250ml,注射用盐酸氨溴索 30mg,地塞米松磷酸钠注射液 5mg                                                        静脉输液                 qd
201901      2           0.9%氯化钠注射液 100ml,甲钴胺注射液 500ug                                                                        静脉输液                 bid
201901      0           复方骨肽注射液 30mg                                                                                         肌肉注射                 qd
201901      0           维生素B1注射液 0.1g                                                                                        肌肉注射                 qd
201902      1           0.9%氯化钠注射液 250ml,注射用盐酸氨溴索 30mg,地塞米松磷酸钠注射液 5mg                                                        静脉输液                 qd
201902      2           0.9%氯化钠注射液 100ml,甲钴胺注射液 500ug                                                                        静脉输液                 bid
201902      0           复方骨肽注射液 30mg                                                                                         肌肉注射                 qd
201902      0           维生素B1注射液 0.1g                                                                                        肌肉注射                 qd

(8 行受影响)
*/
二月十六 2019-07-25
  • 打赏
  • 举报
回复
用stuff+for xml path('') 1楼版主已经给了答案。 赞一下楼主的提问方式,给出测试数据和对应想要的结果

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧