我正在编写一个函数,它在一个varchar中返回子表的一列值的名称。
关系是:
我有一个名为Activity
的父表。
和表Activity
的N-1关系的子表,称为ActivityObjective
。
第三个表格中我保留了目标的名称,称为Objective
。
这是我的查询。这将返回具有Activity
ActivityID = @ActivityID
的目标名称
SELECT o.ObjectiveName
FROM Activity a
INNER JOIN ActivityObjective ao ON a.ActivityID = ao.ActivityID
INNER JOIN Objective o ON o.ObjectiveID = ao.ObjectiveID
WHERE a.ActivityID = @ActivityID
返回类似于:
的内容 ObjectiveName
|-------------------|
objName1
objName2
objName3
我的目标是没有varchar“objName1,objName2,objName3”。我无法创建临时表,因为我正在使用函数。
答案 0 :(得分:0)
您需要调整以下内容以匹配您特别想要的内容,但这是一个开始:
Select substring((
SELECT (', ' + o.ObjectiveName)
FROM Activity a
INNER JOIN ActivityObjective ao ON a.ActivityID = ao.ActivityID
INNER JOIN Objective o ON o.ObjectiveID = ao.ObjectiveID
WHERE a.ActivityID = @ActivityID
FOR XML PATH( '' )
), 3, 1000 )