这与此类似。 How to concatenate all columns in a select with SQL Server
但不完全。这是MS SQL 2008.我正在拉动患者人口统计学,其中一个是种族,这是一个多选领域(例如,你可以是亚洲人和中国人)。比赛表'PatientRace'通过patientid链接到患者台。因此,表结构是:
Patient table
PatientID
PatientName
PatientAddress
PatientRace table
PatientRaceID
PatientID (FK)
Description
我只想要一排,我希望将种族联系起来。是否可以在单个SELECT语句中执行此操作,还是需要执行游标?我设想光标是这样的:初始选择所有其他人口统计,插入临时表。通过patientID查看临时表,然后为每个临时表抓取比赛,连续并添加到临时表。
所需的输出如下:每位患者1排。
姓名:“Joe Blow”
种族:“亚洲人,中国人”
答案 0 :(得分:5)
您需要像这样使用STUFF和FOR XML
SELECT p.PatientName,
(STUFF(SELECT ',' + r.Description
FROM PatientRace r
WHERE r.PatientID = p.PatientID
FOR XML('')), 1, 1, '')
FROM Patients p
答案 1 :(得分:2)
在SQL Server中连接字符串值并不明显。它需要使用" xml"数据处理和子查询:
select p.*,
stuff((select ', ' + Description
from patientrace pr
where pr.patientid = p.patientid
for xml path ('')
), 1, 2, ''
) as races
from patients p;
答案 2 :(得分:1)
至于我,你有写函数,如fn_GetRaceByID(int PatientID),它返回所需的字符串。所以在你的选择中使用它。你的问题中的链接有很好的例子,如何做到这一点。