如何将 SQL JOIN 的结果显示为单独的列?
How to display results from SQL JOIN as separate columns?
我正在尝试连接两个表,然后将结果解析为单独的列,如下所示:
表 1:
Customer_ID
----------
1
2
3
表 2:
Customer_ID ListID
------------------
1 1
1 2
1 5
2 1
2 3
期望的结果:
Customer_ID ListID1 ListID2 ListID3
-----------------------------------
1 1 2 5
2 1 3
3
我使用 LEFT JOIN 组合表,使用 GROUP BY 对具有相同 Custmer_ID 的列进行分组,如下所示:
SELECT MIN([Table1].[Customer_ID])
,MIN([Table2].[ListID])
FROM [Table1]
LEFT JOIN [Table2]
ON [Table2].[Customer_ID] = [Table1].[Customer_ID]
GROUP BY [Table1].[Customer_ID]
当前结果:
Customer_ID ListID
------------------
1 1
2 1
3 NULL
我不知道从这里到哪里才能将 ListID 解析为单独的列。有没有办法遍历 ListID?
这是独一无二的,因为您要为其设置数据透视表的列不存在。您可以使用 Row_number
window 函数创建它。它看起来像这样:
SELECT Customer_ID, [1] ListID1, [2] ListID2, [3] ListID3
FROM
(select Table1.Customer_ID,
Table2.ListID,
ROW_NUMBER() over (Partition by Table1.Customer_ID Order By Table2.ListID) RowNum
from Table1
LEFT JOIN Table2
ON Table2.[Customer_ID] = Table1.[Customer_ID]) as SourceTable
PIVOT
(
max(ListID)
FOR RowNum IN ([1], [2], [3])
) AS PivotTable
这只会显示列中前三个 ListID
值。如果需要更多,可以添加更多 RowNum
值。
我正在尝试连接两个表,然后将结果解析为单独的列,如下所示:
表 1:
Customer_ID
----------
1
2
3
表 2:
Customer_ID ListID
------------------
1 1
1 2
1 5
2 1
2 3
期望的结果:
Customer_ID ListID1 ListID2 ListID3
-----------------------------------
1 1 2 5
2 1 3
3
我使用 LEFT JOIN 组合表,使用 GROUP BY 对具有相同 Custmer_ID 的列进行分组,如下所示:
SELECT MIN([Table1].[Customer_ID])
,MIN([Table2].[ListID])
FROM [Table1]
LEFT JOIN [Table2]
ON [Table2].[Customer_ID] = [Table1].[Customer_ID]
GROUP BY [Table1].[Customer_ID]
当前结果:
Customer_ID ListID
------------------
1 1
2 1
3 NULL
我不知道从这里到哪里才能将 ListID 解析为单独的列。有没有办法遍历 ListID?
这是独一无二的,因为您要为其设置数据透视表的列不存在。您可以使用 Row_number
window 函数创建它。它看起来像这样:
SELECT Customer_ID, [1] ListID1, [2] ListID2, [3] ListID3
FROM
(select Table1.Customer_ID,
Table2.ListID,
ROW_NUMBER() over (Partition by Table1.Customer_ID Order By Table2.ListID) RowNum
from Table1
LEFT JOIN Table2
ON Table2.[Customer_ID] = Table1.[Customer_ID]) as SourceTable
PIVOT
(
max(ListID)
FOR RowNum IN ([1], [2], [3])
) AS PivotTable
这只会显示列中前三个 ListID
值。如果需要更多,可以添加更多 RowNum
值。