【发布时间】:2017-09-25 18:35:52
【问题描述】:
首先 - 我已经看了两天的例子并尝试应用它们但没有成功。我不了解 Pivot 的工作原理,希望能得到一些帮助。
我有一个数据集,每个客户包含多行 - 每次购买一行。 我想为每位客户安排一排 - 最多可购买 6 次,每次购买日期。
老实说,我什至不知道这是否可能……因为购买日期 [PDate] 的差异如此之大。 ?
这是我的起始数据集的 SQL:
DECLARE @Test AS TABLE
(
Location VARCHAR(20),
Mgr VARCHAR(30),
CId VARCHAR(20),
CName VARCHAR(100),
BDate DATE,
Age Int,
Item Varchar(15),
PDate Date
)
Insert Into @Test
(Location, Mgr, CId, CName, BDate, Age, Item, PDate)
Values
('A','Bob','1','Bill Jones','1967-04-27', 50,'Hammer','2017-04-05'),
('A','Bob','1','Bill Jones','1967-04-27', 50,'Nails','2017-03-17'),
('A','Bob','1','Bill Jones','1967-04-27', 50,'Screws','2017-02-15'),
('A','Bob','1','Bill Jones','1967-04-27', 50,'Nails','2017-01-26'),
('A','Bob','1','Bill Jones','1967-04-27', 50,'Screws','2016-12-20'),
('A','Bob','1','Bill Jones','1967-04-27', 50,'Nails','2016-11-03'),
('B','Dan','15','Sharon Jones','1969-04-27', 48,'Nails','2017-04-05'),
('B','Dan','15','Sharon Jones','1969-04-27', 48,'Nails','2017-03-07'),
('B','Dan','15','Sharon Jones','1969-04-27', 48,'Screws','2017-02-18')
Select * From @Test
我需要看看这个:
A Bob 1 Bill Jones 1967-04-27 50 Hammer 2017-04-05 Nails 2017-03-17 ....
B Dan 15 Sharon Jones 1969-04-27 48 Nails 2017-04-05 Nails 2017-03-07 ....
...本质上,每个 CId 对应一行: 位置、经理、CId、CName、BDate、年龄、Item1、Date1、Item2、Date2、Item3、Date3 ... 最多 6 件购买的物品。
提前致谢!
【问题讨论】:
标签: sql sql-server tsql pivot