Sql 合并使结果值加倍

Sql 合并使结果值加倍,sql,sql-server,tsql,coalesce,Sql,Sql Server,Tsql,Coalesce,在功能上 SELECT @ProcedureName = COALESCE(@ProcedureName + ',', '') + ProcedureName FROM V_Procedures P inner join MedicalRecords MR on P.Medical_Record=MR.Medical_Record where ProcedureName IS NOT NULL and MR.Admission_No  = @Admission_No and Field =

在功能上

SELECT @ProcedureName = COALESCE(@ProcedureName + ',', '') + ProcedureName
FROM V_Procedures P 
inner join MedicalRecords MR on P.Medical_Record=MR.Medical_Record 
where ProcedureName IS NOT NULL and MR.Admission_No  = @Admission_No 
and Field = 18
得到许多用逗号分隔的双精度,有可能避免吗

例如,结果值多次显示为

CONCHOTOMY,FESS-FUNCTIONAL ENDOSCOPIC (NASAL) SINUS SURGERY,CONCHOTOMY,FESS-FUNCTIONAL ENDOSCOPIC (NASAL) SINUS SURGERY,SUBMUCOUS RESECTION OF NASAL SEPTUM

相反,用海螺试着聚结。也可以分组

DECLARE @ProcedureName VARCHAR(max);

SELECT @ProcedureName = CONCAT(@ProcedureName + ',', ProcedureName)
FROM V_Procedures P
JOIN MedicalRecords MR ON P.Medical_Record = MR.Medical_Record 
WHERE ProcedureName IS NOT NULL AND MR.Admission_No  = @Admission_No 
  AND Field = 18
GROUP BY ProcedureName

诀窍在于,当向CONCAT添加NULL时,它不会返回NULL。但
+
确实如此。因此,因为@ProcedureName一开始是空的,所以结果不会以逗号开头。

您似乎想要
不同的

SELECT DISTINCT @ProcedureName = COALESCE(@ProcedureName + ',', '') + ProcedureName
FROM V_Procedures P INNER JOIN 
     MedicalRecords MR 
     ON P.Medical_Record=MR.Medical_Record 
WHERE ProcedureName IS NOT NULL AND 
      MR.Admission_No  = @Admission_No AND 
      Field = 18;

一种方法是在查询中添加
groupby
作为
groupby ProcedureName
。您确定它适用于所有数据库吗?因为
OP
没有标记他正在使用的数据库。@Susang他标记了t-sql。所以它不是MS Sql Server就是Sybase ASE。可能是前者。