提问人:Daniel Mashburn 提问时间:11/7/2023 最后编辑:Daniel Mashburn 更新时间:11/7/2023 访问量:53
如何将一对多关系 SQL 查询到列中
How to SQL query One to Many relationship into columns
问:
我有一张表格如下: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 |
答: 暂无答案
评论