我正在使用SQL Server 2008并继承了一个不使用多对多的数据库。他们改为使用逗号分隔的列。我已经找到了如何将逗号分隔值链接到程序名称。但是我需要一份程序清单和他们所属的办公室,比如这个
OFFICE
表:
ID Name
--- ------
1 HQ
2 PA
3 CEO
PRG
表:
ID Name Office Affected
-- ---- ---------------
A PRG1 1,3
B PRG2 2
C PRG3 2,3
D PRG4 1,2
我需要的输出:
Name Programs
---- ---------
HQ PRG1, PRG4
PA PRG2, PRG3, PRG4
CEO PRG1, PRG3
答案 0 :(得分:1)
你可以设法做到这一点。但是,因为在字符串中存储列表是一个坏主意,我不想通过将它们放回逗号分隔的列表来复合它。相反,以下查询以更规范化的形式生成数据,每个办公室名称和程序占一行:
select o.name, p.name as program_name
from prg p join
office o
on ','+p.OfficeAffected+',' like '%,'+cast(o.id as varchar(255)) + ',%';