【发布时间】:2020-01-27 04:55:49
【问题描述】:
我有一个包含 3 列的表,Model_Name、Style_Name 和 Option_Name。如何连接按 Model_Name 和 Style_Name 分组的 Option_Names 的所有可用组合?我正在尝试做的是在单独的行中列出具有所有可能选项组合的产品。
我一直在尝试使用STRING_AGG(Option_Name, ' / ') WITHIN GROUP,但这只是结合了所有 Option_Names。
表格将如下所示。
Model_Name | Style_Name | Option_Name
7000 Series | Front Door | White
7000 Series | Front Door | Extra Lock
7000 Series | Front Door | Foam Filler
理想情况下,我们会使用 SQL Server 返回所有组合。
7000 Series | Front Door | White
7000 Series | Front Door | White / Extra Lock
7000 Series | Front Door | White / Foam Filler
7000 Series | Front Door | White / Extra Lock / Foam Filler
7000 Series | Front Door | Extra Lock
7000 Series | Front Door | Extra Lock / Foam Filler
7000 Series | Front Door | Foam Filler
等等
SELECT Model_Name, Style_Name
, STRING_AGG(CAST(Option_Name AS VARCHAR(MAX)), ' / ') WITHIN GROUP (ORDER BY Model_Name, Style_Name) Option_Name
FROM [dbo].[Product_Option_Master]
GROUP BY Model_Name, Style_Name
ORDER BY Model_Name, Style_Name
这只是返回
7000 Series | Front Door | White / Extra Lock / Foam Filler
【问题讨论】:
标签: sql sql-server combinations product options