我在SQL Server数据库中有两个链接表,其中一个包含有关各个工厂的信息,另一个包含与该工厂链接的所有者(在单独的行中)。
我想通过联接或类似方式“合并”这两个对象,但我希望将所有者列表压缩到一个字段中,而不同的所有者之间用逗号隔开。
下面是创建一些测试数据的代码:
CREATE TABLE Plant (
PlantId INTEGER PRIMARY KEY,
Capacity DECIMAL(10,4) not null
);
CREATE TABLE PlantOwners (
OwnerId INTEGER PRIMARY KEY,
PlantFK INTEGER not null
OwnerName VARCHAR(12) not null
);
INSERT INTO Plant
VALUES
(1, 505.53),
(2, 251.4),
(3, 387.05),
(4, 179.65),
(5, 217.52)
;
INSERT INTO PlantOwners
VALUES
(1, 1, 'Apple'),
(2, 1, 'Microsoft'),
(3, 2, 'LG'),
(4, 2, 'CISCO'),
(5, 2, 'DELL'),
(6, 3, 'HP'),
(7, 3, 'Sony'),
(8, 3, 'Vornado'),
(9, 4, '3M'),
(10, 4, 'Microsoft'),
(11, 5, 'Apple')
;
这就是结果的样子。
PlantId Capacity OwnerName
1 505.53 Apple, Microsoft
2 251.4 LG, CISCO, DELL
3 387.05 HP, Sony, Vornado
4 179.65 3M, Microsoft
5 217.52 Apple
我并不是很挑剔,看起来像这样,所以(例如)如果在Owners字段的每一行中列出的最后一个项目后面带有逗号是比较容易的,那对我很好。所以这也很好(或者真的是这样):
PlantId Capacity OwnerName
1 505.53 Apple, Microsoft,
2 251.4 LG, CISCO, DELL,
3 387.05 HP, Sony, Vornado,
4 179.65 3M, Microsoft,
5 217.52 Apple,