【发布时间】:2017-06-23 18:22:44
【问题描述】:
我试图了解如何使用 SQL Server 的 PIVOT 函数来透视 2 列。我见过的大部分例子,都使用了2列以上,不知道在使用较少列的情况下如何应用。
任何帮助将不胜感激。
列是 shopper_id 和 sku,我需要将 shopper_id 放在一列中,左侧的 sku 用逗号分隔。
这是我需要转换的查询:
SELECT
[a].[shopper_id]
, [a].[sku]
FROM
( SELECT
[s].[shopper_id]
, [si].[sku]
FROM
[dbo].[sales] [s]
INNER JOIN [dbo].[sales_item] [si]
ON
[si].[order_id] = [s].[order_id]
WHERE
[si].[sku] IS NOT NULL
AND [si].[sku] NOT LIKE ''
ORDER BY
[si].[sku]
) [a];
以下是一些数据:
0ZF57CFXCBTF4G2X68B9DKH1C9DNUN37 BKAL00-30013
72YHJYU0QFMSNC61RG42TGTD53FDUM37 BKAL00-30013
4U3H3V4LX193NLY4C0FXJJD2SSS3BT37 BKAL00-30013
7UQBXPWB0CSXNYYNB1R360BJHKCQ6F47 BKAL00-30013
6WTCMTS6551PNGQRKDZRZ6NLRMB011P6 BKAL00-30013
784HKB96M5SN4VBU18U0Y3WH037F2147 BKAL0011674X
784HKB96M5SN4VBU18U0Y3WH037F2147 BKAL0011675X
TDK8YDJQMTHL48GNGVXGS6RBUCHPKK37 BKAL0020413X
R472477HL8C8N2GBP9TG6F1K7N5JV1P6 BKAL0024498
ZSM7F5FNYBXDNZU3KZTV71PY58K8KQ17 BKAL0024498
YPF1NDD5Z35V4GGMXXPCWRUF56NTKYB6 BKAL0024498
CGNYSNFF0M0WNLU2FW6NRKJ7JQL6MBW5 BKAL0025397
Y7J85S5M29LG45Y69H2QDJFX5JB17D47 BKAL0025397
预期的输出应该是:
shopper id sku1 sku2 sku3 so on...
00000148-4CDD-46C1-BD86-DF001A MN0042258 MN0073222 MN0044842
so on...
非常感谢。
【问题讨论】:
-
预期的输出是?
-
我添加了预期的输出示例
-
现在您不想用逗号分隔列表,而是组成列名?
-
使用动态枢轴添加了另一个答案
标签: sql sql-server-2012 pivot-table