如何将一对多关系 SQL 查询到列中

How to SQL query One to Many relationship into columns

提问人:Daniel Mashburn 提问时间:11/7/2023 最后编辑:Daniel Mashburn 更新时间:11/7/2023 访问量:53

问:

我有一张表格如下:Parts

同上 名字
1 齿轮
2 轮子

而另一张表格如下:PartDetails

同上 细节 属性 库存
1 0 1 100
1 1 1 200
1 2 1 300
1 1 300
1 0 2 400
1 1 2 500
1 2 2 600
1 2 600
2 0 1 100
2 1 1 200
2 2 1 300
2 1 300
2 0 2 400
2 1 2 500
2 2 2 600
2 2 600

我正在尝试编写一个查询,将详细信息分成列,以便每一行都是一个部分,并且每个详细信息和与之对应的库存值都有一个列。请注意,我也想排除详细信息行,其中为 nullDetail1

我尝试过使用透视的查询,但我不相信这正是我正在寻找的,因为我不需要任何聚合:

SELECT * FROM (
    SELECT p.Id, pd.Detail, pd.Inventory
    FROM Parts p 
    JOIN PartDetails pd ON pd.Id = p.Id
    WHERE pd.Detail1 IS NOT NULL
) AS SourceData
PIVOT (
    MAX(pd.Detail)
    FOR pd.Detail IN ([0], [1] , [2])
) AS PivotTable

我正在寻找如下所示的结果:

同上 名字 详细0-1库存 详情1-1库存 详情2-1库存 详情2-0库存 详情2-1库存 详情2-2库存
1 齿轮 100 200 300 400 500 600
2 轮子 100 200 300 400 500 600
SQL-Server 透视子 查询

评论


答: 暂无答案