从连接表中选择值作为单列

时间:2019-04-11 14:48:43

标签: sql sql-server tsql ssms

我在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,

0 个答案:

没有答案