Given the following structure and data, I am looking for joins by customer where a manufacturer has changed:
create table #sale (
saleid int,
customerid int,
productid int,
saledate date
);
create table #product (
productId int,
name varchar(max),
manufacturerId int
);
create table #manufacturer (
manufacturerid int,
name varchar(max)
)
insert into #manufacturer values (1, 'Manufacturer 1');
insert into #manufacturer values (2, 'Manufacturer 2');
insert into #product values (1, 'Product A', 1);
insert into #product values (2, 'Product B', 1);
insert into #product values (3, 'Product C', 2);
insert into #sale values (1, 101, 1, '2013-01-01');
insert into #sale values (2, 101, 2, '2015-04-01');
insert into #sale values (3, 102, 3, '2013-03-01');
insert into #sale values (4, 102, 3, '2015-01-01');
insert into #sale values (5, 103, 1, '2013-01-01');
insert into #sale values (6, 103, 3, '2015-06-01');
insert into #sale values (7, 102, 1, '2015-06-01');
In this scenario, two customers have switched to products with different manufacturers and the ideal results look like this:
customerid previous manufacturer new manufacturer date
102 Manufacturer 2 Manufacturer 1 6/1/2015
103 Manufacturer 1 Manufacturer 2 6/1/2015
I've been trying to use a CTE, but have not found success. Appreciate and insight or guidance.
Update - I could live with expanding horizontally a certain number of joins on customerid to show different manufacturers and dates (5-10 joins). That one is a lot easier to do for me than trying to UNION ALL with a CTE.
Thanks!