0

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
3
  • Another way to do such a thing would be the Merge statement. Just a thought. Typically though this is used for If exists Update else Insert Commented Jun 1, 2017 at 20:08
  • What are you stuck on? Commented Jun 1, 2017 at 20:08
  • 1
    Where... And not exists (coorlated subquery on keys) Commented Jun 1, 2017 at 20:51

1 Answer 1

1

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)
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.