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。可能是前者。