我在类型为nvarchar
的SQL Server表中具有此列,该表的另一个表的ID号用分号分隔(不良设计,无法更改)。
当GroupIds列中只有一个值时,我尝试运行的查询有效,但是对于多个组,它会失败并显示错误
将nvarchar值'2; 5'转换为数据类型int时转换失败。
代码:
SELECT
i.Name,
i.Channel,
g.Name AS 'Group Name',
io.Name AS 'Logger Name',
io.ModuleType,
io.IpAddress
FROM
Input i
JOIN
[dbo].[Group] g ON i.GroupIds = g.Id
JOIN
[dbo].[IoModule] io ON i.IoModuleId = io.Id
ORDER BY
i.Channel, io.Name;
我已经用尽了我的Google技能,但有些工作却无法完成,但是却没有任何结果。理想情况下,我希望看到一个结果,其中“组名”用逗号分隔。
注意:我需要将其作为生产数据库中的一次性报告。我无法创建临时表,函数或任何类似性质的东西。这个问题被标记为重复的答案没有任何帮助。在过去的十年中,有42个答案。这些都没有关于从联接中选择该数据的任何信息。可能是我普遍缺乏联接知识,但是我正在寻找一个答案,即基本上将组ID按组名放在一列中,并用逗号分隔。