我试图了解如何执行此操作,但所有示例均基于总和。我不想这样做。我有两列,事务ID和ProductID。
我真的希望在列中返回productID,每行都是一个新的transactionID。没有涉及的金额。
此致
答案 0 :(得分:0)
我创建了一个名为Products
的表格,其中我有两列你想要的,但你可以将其标准化:
以下脚本适用于Microsoft SQL Server 2008 R2
。
表格强>:
CREATE TABLE Products
(
ProductID INT,
TransactionID INT
);
<强>插入强>:
INSERT INTO Products VALUES(1,101);
INSERT INTO Products VALUES(2,102);
INSERT INTO Products VALUES(3,103);
INSERT INTO Products VALUES(4,104);
INSERT INTO Products VALUES(4,104);
注意:带有productID = 4
的最后一个记录插件是两次,只显示数据透视表中的计数。
获取ProductID :在这里,我使用productIDs
获取STUFF
。
select STUFF((SELECT distinct ',' + QUOTENAME(ProductID)
FROM products
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'');
数据透视表脚本:
SELECT TransactionID,[1],[2],[3],[4] FROM
(
SELECT ProductID,TransactionID,TransactionID as tr
FROM Products
) AS a
PIVOT
(
count(Tr)
FOR ProductID in ([1],[2],[3],[4])
) AS pvt;
<强>输出强>:
TransactioID 1 2 3 4
-------------------------------
101 1 0 0 0
102 0 1 0 0
103 0 0 1 0
104 0 0 0 2