我有 2 张桌子。一个称为“Tasks”,另一个在我的“Task”中称为“TaskDescription”,设置如下所示:“taskID(primary)”、“FileID”、“TaskTypeID”和一堆其他不相关的列。
然后在我的“TaskDescription”中,设置看起来像:“TaskTypeID”、“TaskTypeDesc”
因此,例如,如果 TaskTypeID 为 1 ,则描述将为“admin”,或者如果 TaskTypeID 为 2,则 TaskTypeDesc 将为“Employee”等。
这两个表在主/外键“TaskTypeID”上有关系。
我想要做的是获取一个任务 ID,以及 FileID 与 @fileID 匹配的 TaskDesc(我作为参数传入)。但是,在我的查询中,我在尝试获取描述时返回了多行而不是单行。
这是我的查询:
SELECT taskid,
( 'Task ID: '
+ Cast(cf.taskid AS NVARCHAR(15)) + ' - '
+ Cast((SELECT DISTINCT td.tasktypedesc FROM casefiletaskdescriptions
td JOIN
casefiletasks cft ON td.tasktypeid=cft.tasktypeid WHERE cft.taskid =
1841 )AS
NVARCHAR(100))
+ ' - Investigator : ' + ( Cast(i.fname AS NVARCHAR(20)) + ' '
+ Cast(i.lname AS NVARCHAR(20)) ) ) AS
'Display'
FROM casefiletasks [cf]
JOIN investigators i
ON CF.taskasgnto = i.investigatorid
WHERE cf.fileid = 2011630988
AND cf.concluded = 0
AND cf.progressflag != 'Conclude'
我试图让输出看起来像“任务 ID:1234 - 管理员 - 调查员:John Doe”。但是我在这方面遇到了麻烦:
CAST((select DISTINCT td.TaskTypeDesc from CaseFileTaskDescriptions td
JOIN CaseFileTasks cft ON td.TaskTypeID=cft.TaskTypeID
where cft.TaskID =1841 )as nvarchar(100))
这似乎可行,但问题是我必须对值“1841”进行硬编码才能使其工作。有没有办法用从 TaskID 选择查询返回的值分配一个“taskID”变量,或者它不会工作,因为我认为 sql 一次运行所有内容而不是逐行运行。
编辑-这是在 Microsoft SQL Server Management Studio 2008 中