Reputation: 11
So I need to insert values into a table, but if those values exist I want my script to not insert anything. I have pretty much gotten it solved, but I am stuck at the very end with my insert statement.
DECLARE @billableitemID int;
set @billableitemid = (select billableitemID from dbo.treatment where
@billableitemid=treatment.id)
set @billableitemID = 256
CREATE TABLE #MembershipBenefitItem
( BenefitID int ,
BillableItemTypeID int ,
BillableItemID int
)
INSERT INTO #MembershipBenefitItem
( BenefitID ,
BillableItemTypeID ,
BillableItemID
)
VALUES (23450,1,@billableitemid),
(57256,1,@billableitemid)
select m.* from #MembershipBenefitItem AS M
left join membershipbenefititem AS M1 on m.billableitemid= m1.billableitemid
and m.billableitemtypeid= m1.billableitemtypeid
and m.benefitid= m1.benefitID
and M1.billableitemID=@billableitemID and M1.billableitemtypeID=1 and
M1.benefitID IN(23450,57256)
where M1.ID is null
INSERT INTO MembershipBenefitItem
( BenefitID,
BillableItemTypeID,
BillableItemID
)
select m.BenefitID, m.BillableItemTypeID, m.BillableItemID from
#MembershipBenefitItem AS M
left join membershipbenefititem AS M1 on m.billableitemid= m1.billableitemid
and m.billableitemtypeid= m1.billableitemtypeid
and m.benefitid= m1.benefitID
and M1.billableitemID=@billableitemID and M1.billableitemtypeID=1 and
M1.benefitID IN(23450,57256)
where M1.ID is null
DROP TABLE #MembershipBenefitItem
Upvotes: 0
Views: 105
Reputation: 4505
This looks like a good case to use Merge
statement.
https://learn.microsoft.com/en-us/sql/t-sql/statements/merge-transact-sql
It would look something like:
MERGE MembershipBenefitItem AS trg
USING #MembershipBenefitItem AS src
ON src.BillableItemID = trg.BillableItemID --and other join conditions
WHEN NOT MATCHED BY TARGET THEN
INSERT (col1, col2, col3) -- this will be inserted into trg table
VALUES (src.val1, src.val2, src.val3)
Upvotes: 1