samedi 25 juin 2016
How to use a CTE to insert multiple records based on hierarchy
Lets say I have a Customer table that contains CustomerId as a primary key and ParentCustomerId as a foreign key and I want to cascade an insert statement to create a record for each of the Customers in the hierarchy chain.
I also have a CustomerContact table that has a clustered primary key of CustomerId, PersonId, and DateCreated
So if I have the following:
Customer1: CustomerId: 1 : ParentCustomerId: Null
Customer2: CustomerId: 2 : ParentCustomerId: 1
Customer3: CustomerId: 3 : ParentCustomerId: 2
And I pass 1 into my customer ID, but I want to create 3 (although in this case the 3 is a variable, the hierarchies could go deeper) so that I insert into a different table a row for each customer in the chain.
declare @1 as int --customerId
declare @2 as int --personId for the contact
declare @3 as datetime --DateCreated
set @1 = 1
set @2 = 1 --personId
set @3 = GetDate()
--I don't know how to use a CTE to get all the CustomerIds that are
--
--something like
--with cte_customers
--as
--(select CustomerId from customer
-- where ParentCustomerId = @1
--)
insert into CustomerContact
Values(@1, @2, @3)
How can I write a CTE to get the children of all the customers related to param @1 and create a record in CustomerContact for each?
Inscription à :
Publier les commentaires (Atom)
Aucun commentaire:
Enregistrer un commentaire