【问题标题】:How to display results from SQL JOIN as separate columns? [duplicate]如何将 SQL JOIN 的结果显示为单独的列? [复制]
【发布时间】:2015-09-11 05:54:03
【问题描述】:

我正在尝试加入两个表,然后将结果解析为单独的列,如下所示:

表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?

【问题讨论】:

标签: sql-server sql-server-2008-r2 group-by pivot


【解决方案1】:

这是独一无二的,因为您想要透视的列不存在。您可以使用Row_number 窗口函数创建它。它看起来像这样:

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 值。

【讨论】:

  • 成功了,非常感谢!!我一定会去研究更多关于数据透视表的内容。
猜你喜欢
  • 2017-12-07
  • 2014-02-08
  • 1970-01-01
  • 2016-01-11
  • 2022-01-07
  • 1970-01-01
  • 1970-01-01
  • 2013-08-02
  • 2021-03-04
相关资源
最近更新 更多