【问题标题】:SQL comma separated values grouped in query [duplicate]在查询中分组的 SQL 逗号分隔值 [重复]
【发布时间】:2014-01-15 04:27:09
【问题描述】:

我正在使用 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

【问题讨论】:

标签: sql sql-server


【解决方案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)) + ',%';

【讨论】:

  • p.id 应该是 o.id 吗?
猜你喜欢
  • 2011-12-27
  • 2011-06-18
  • 1970-01-01
  • 2010-10-05
  • 1970-01-01
  • 2013-10-26
  • 1970-01-01
  • 2012-02-04
  • 2017-07-04
相关资源
最近更新 更多