SQL Server 查询问题,因为字段不同而产生多条记录,怎样只让在一条记录里显示,请大神指教

时间:2020-12-18 15:02:37
SQL Server 查询问题,因为字段不同而产生多条记录,怎样只让在一条记录里显示,请大神指教

select 
  分站=mp.station ,
 医生=tpl.姓名
,氧气=isnull(sum(case  when mt.ProjectID='yqf' then 1 else ' ' end),0) 
,血糖测定=isnull(sum(case  when mt.ProjectID='SpO2-XM' then 1 else ' ' end),0) 
,心肺复苏=isnull(sum(case  when mt.ProjectID='Press' then 1 else ' ' end),0)
,气管插管=isnull(sum(case  when mt.ProjectID='Cannula' then 1 else ' ' end),0)
,心电监护=isnull(sum(case  when mt.ProjectID='ECG-NX' then 1 else ' ' end),0)
,心电图=isnull(sum(case  when mt.ProjectID='ECGT' then 1 else ' ' end),0)
,无创辅助通气=isnull(sum(case  when mt.ProjectID='BreathL-NX' then 1 else ' ' end),0)
,呼吸机辅助呼吸=isnull(sum(case  when mt.ProjectID='BreathC' then 1 else ' ' end),0)
,呼吸机辅助給氧=isnull(sum(case  when mt.ProjectID='BreathYX' then 1 else ' ' end),0)
,加压給氧=isnull(sum(case  when mt.ProjectID='Jygy' then 1 else ' ' end),0)
,各部位包扎术=isnull(sum(case  when mt.ProjectID in ('Bandage','Tourniquet','Scarf','Zxbz','Binder') then 1 else ' ' end),0)
,静脉注射=isnull(sum(case  when mt.ProjectID='Vein' then 1 else ' ' end),0)
,肌肉注射=isnull(sum(case  when mt.ProjectID='Thews' then 1 else ' ' end),0)
,鼻导管吸氧=isnull(sum(case  when mt.ProjectID='Oxygen' then 1 else ' ' end),0) 
,静脉穿刺置管=isnull(sum(case  when mt.ProjectID='jmcczg' then 1 else ' ' end),0)
,心电监测=isnull(sum(case  when mt.ProjectID='ECG-XM' then 1 else ' ' end),0)
,放置口咽通气管=isnull(sum(case  when mt.ProjectID='Breather' then 1 else ' ' end),0)
,弹力帽包扎=isnull(sum(case  when mt.ProjectID='Cap' then 1 else ' ' end),0)
,绷带包扎=isnull(sum(case  when mt.ProjectID='Bdbz' then 1 else ' ' end),0) 
,夹板固定=isnull(sum(case  when mt.ProjectID='Assula' then 1 else ' ' end),0)
,颈托固定=isnull(sum(case  when mt.ProjectID='NeckSup' then 1 else ' ' end),0)
,物理降温=isnull(sum(case  when mt.ProjectID in ('WLJW','Cooling') then 1 else ' ' end),0) 
,腰围固定=isnull(sum(case  when mt.ProjectID='YWGD' then 1 else ' ' end),0)
,其他=isnull(sum(case  when mt.ProjectID not in ('yqf','SpO2-XM','Press','Cannula','ECG-NX','ECGT','BreathL-NX','BreathC','BreathYX','Jygy','Bandage','Tourniquet','Scarf','Zxbz','Binder','Vein','Thews','Oxygen',
      'jmcczg','ECG-XM','Breather','Cap','Bdbz','Assula','NeckSup''WLJW','Cooling','YWGD','Thorac','fqccs', 'stll' ,'OtherMea') then 1 else '' end),0)
from dbo.M_PredefinedTreatmentRecord mpd
left join dbo.M_TreatmentRecord mt  on mpd.ProjectID=mt.ProjectID
left join dbo.M_MeasureGroup mm on mm.GroupID=mpd.GroupID 
left  join dbo.M_PatientRecord mp on ltrim(rtrim(substring(mt.PatientRecordID,1,20)))=mp.TaskCode  and ltrim(rtrim(substring(mt.PatientRecordID,21,1)))= mp.PatientOrder 
inner join dbo.TTask tt on tt.任务编码 = mp.TaskCode
left join dbo.TTaskPersonLink tpl on tpl.任务编码=tt.任务编码 
left join talarmevent tae  on tae.事件编码=tt.事件编码
where  mm.GroupID=2101 and mm.ParentID=2001 and mpd.IsUse=1 and tae.是否测试=0 
group by tpl.姓名,mp.station,mpd.ProjectID
这是查询得到的部分结果
SQL Server 查询问题,因为字段不同而产生多条记录,怎样只让在一条记录里显示,请大神指教

8 个解决方案

#1


select distinct 字段 from 表

#2


引用 1 楼 sinat_28984567 的回复:
select distinct 字段 from 表

谢谢,这个试过了,还是有很多条记录

#3


引用 2 楼 ywpnptyj 的回复:
Quote: 引用 1 楼 sinat_28984567 的回复:

select distinct 字段 from 表

谢谢,这个试过了,还是有很多条记录

额,楼主是想去重还是就是想把这么多条数据变成一条?
如果想变成一条的话,百度一下for xml path这个可以

#4


GROUP BY 中的 mpd.ProjectID 去掉啊!!!

#5


引用 4 楼 Tiger_Zhao 的回复:
GROUP BY 中的 mpd.ProjectID 去掉啊!!!

谢谢!刚开始我也没有加这个,运行时提示'M_TreatmentRecord'无效,因为该列没有包含在聚合函数或 GROUP BY 子句中,我就又加上了

#6


引用 5 楼 ywpnptyj 的回复:
谢谢!刚开始我也没有加这个,运行时提示'M_TreatmentRecord'无效,因为该列没有包含在聚合函数或 GROUP BY 子句中,我就又加上了 

M_TreatmentRecord 是表名,和 GROUP BY 有什么关系?

#7


引用 6 楼 Tiger_Zhao 的回复:
[Quote=引用 5 楼 ywpnptyj 的回复:]谢谢!刚开始我也没有加这个,运行时提示'M_TreatmentRecord'无效,因为该列没有包含在聚合函数或 GROUP BY 子句中,我就又加上了 

M_TreatmentRecord 是表名,和 GROUP BY 有什么关系?
谢谢,嘿嘿,写错了,当时是M_TreatmentRecord.ProjectID,不过最后尝试用另一种方法写,没有重复的了

#8


引用 3 楼 sinat_28984567 的回复:
Quote: 引用 2 楼 ywpnptyj 的回复:

Quote: 引用 1 楼 sinat_28984567 的回复:

select distinct 字段 from 表

谢谢,这个试过了,还是有很多条记录

额,楼主是想去重还是就是想把这么多条数据变成一条?
如果想变成一条的话,百度一下for xml path这个可以

谢谢,我百度看看

#1


select distinct 字段 from 表

#2


引用 1 楼 sinat_28984567 的回复:
select distinct 字段 from 表

谢谢,这个试过了,还是有很多条记录

#3


引用 2 楼 ywpnptyj 的回复:
Quote: 引用 1 楼 sinat_28984567 的回复:

select distinct 字段 from 表

谢谢,这个试过了,还是有很多条记录

额,楼主是想去重还是就是想把这么多条数据变成一条?
如果想变成一条的话,百度一下for xml path这个可以

#4


GROUP BY 中的 mpd.ProjectID 去掉啊!!!

#5


引用 4 楼 Tiger_Zhao 的回复:
GROUP BY 中的 mpd.ProjectID 去掉啊!!!

谢谢!刚开始我也没有加这个,运行时提示'M_TreatmentRecord'无效,因为该列没有包含在聚合函数或 GROUP BY 子句中,我就又加上了

#6


引用 5 楼 ywpnptyj 的回复:
谢谢!刚开始我也没有加这个,运行时提示'M_TreatmentRecord'无效,因为该列没有包含在聚合函数或 GROUP BY 子句中,我就又加上了 

M_TreatmentRecord 是表名,和 GROUP BY 有什么关系?

#7


引用 6 楼 Tiger_Zhao 的回复:
[Quote=引用 5 楼 ywpnptyj 的回复:]谢谢!刚开始我也没有加这个,运行时提示'M_TreatmentRecord'无效,因为该列没有包含在聚合函数或 GROUP BY 子句中,我就又加上了 

M_TreatmentRecord 是表名,和 GROUP BY 有什么关系?
谢谢,嘿嘿,写错了,当时是M_TreatmentRecord.ProjectID,不过最后尝试用另一种方法写,没有重复的了

#8


引用 3 楼 sinat_28984567 的回复:
Quote: 引用 2 楼 ywpnptyj 的回复:

Quote: 引用 1 楼 sinat_28984567 的回复:

select distinct 字段 from 表

谢谢,这个试过了,还是有很多条记录

额,楼主是想去重还是就是想把这么多条数据变成一条?
如果想变成一条的话,百度一下for xml path这个可以

谢谢,我百度看看