SQL Server将select查询作为一个select列的一部分
嘿,我只是想知道以下是可能的SQL Server将select查询作为一个select列的一部分,sql,sql-server,sql-server-group-concat,Sql,Sql Server,Sql Server Group Concat,嘿,我只是想知道以下是可能的 select id, name, (select name from secondTable where companyId = tableOne.id) as concatenatedString.. from tableOne 因此,我希望select可以为tableOne中的每个记录返回,在另一个表中执行查找并返回该记录id的所有值(另一个表是查找表,因此每个id可能有一个或多个条目)。如果子查询中返回的值超过1,则生成单个字符串值,并以逗号分隔 因此,即返
select id, name, (select name from secondTable where companyId = tableOne.id) as concatenatedString..
from tableOne
因此,我希望select可以为tableOne中的每个记录返回,在另一个表中执行查找并返回该记录id的所有值(另一个表是查找表,因此每个id可能有一个或多个条目)。如果子查询中返回的值超过1,则生成单个字符串值,并以逗号分隔
因此,即返回的数据
1 Microsoft Bill,Gate,Jack
2 Apple Jobs
我不确定您为什么要跳过联接,因为它会使您的查询更加灵活。如果您喜欢使用sub-select,可以通过将sub-select设置为表来实现:
SELECT t1.id, t1.name, t2.name
FROM tableOne t1
INNER JOIN (select id, name from secondTable) AS t2
on t1.id = t2.id
当然,如果你所做的只是加入ID,那么Abe的回答更有意义
如果您想在select上进行聚合,以防它返回多个列,那么可以使用GROUP BY t1.id、t1.name。我不确定您为什么要跳过联接,因为它会使查询更加灵活。如果您喜欢使用sub-select,可以通过将sub-select设置为表来实现:
SELECT t1.id, t1.name, t2.name
FROM tableOne t1
INNER JOIN (select id, name from secondTable) AS t2
on t1.id = t2.id
当然,如果你所做的只是加入ID,那么Abe的回答更有意义
如果要在select上进行聚合,以防它返回多个列,则可以使用GROUP BY t1.id、t1.name。要使用
进行XML路径构建:
select
ID,
Name,
stuff((select ', ' + Name
from secondTable where companyId = tableOne.id
for xml path('')),
1,2,'') [Names]
from tableOne
STUFF
函数用于删除最后一个将附加在末尾的,'
您还可以在此处看到其他示例:
您想对XML路径使用
构造:
select
ID,
Name,
stuff((select ', ' + Name
from secondTable where companyId = tableOne.id
for xml path('')),
1,2,'') [Names]
from tableOne
STUFF
函数用于删除最后一个将附加在末尾的,'
您还可以在此处看到其他示例:
OP希望将“第三列”显示为逗号分隔的值字符串。联接将为每个公司提供多行,只要employeesOP希望将“第三列”显示为逗号分隔的值字符串即可。加入将为每家公司提供多条生产线,数量与员工数量相同