Hi Guys,
I need help. I want to use a MERGE statement. The source and target tables are pretty big so I really want to use MERGE Statement
Here is the issue. I want to compare SOURCE VS Target table with some filters in the target table. I am not sure how and where I can
use a filter. in MERGE Statement. Below are my query and sample data.
DECLARE @Targettable TABLE
(
id [int] IDENTITY(1,1) NOT NULL,
city VARCHAR(25),
PhoneNumber VARCHAR(15),
state VARCHAR(5),
bid INTEGER NULL
)
DECLARE @FilterTable TABLE
(
id [int] IDENTITY(1,1) NOT NULL,
Fname VARCHAR(50)
)
INSERT INTO @Targettable
( city, PhoneNumber, state, bid )
select 'San Pedro','7609876788', 'CA',1
UNION
select 'Los Angles','7609876767', 'CA',1
UNION
select 'New York','7609876908', 'NY',1
UNION
select 'Los Angles','7609876767', 'CA',2
UNION
select 'Los Am','920786777', 'CA',2
INSERT INTO @FilterTable
( Fname )
SELECT 'FULL_EXECUTION123.CSV'
UNION
SELECT 'EXIT_EXECUTION123.CSV'
--SELECT * FROM @Targettable
--SELECT * FROM @FilterTable
--The final query that I want to use as my TARGET Table START
--SELECT
-- T.city
-- ,T.PhoneNumber
-- ,T.state
-- FROM @Targettable T
-- INNER JOIN @FilterTable F
-- ON T.bid = F.id
-- AND SUBSTRING(F.Fname,1,4) = 'FULL'
--The final query that I want to use as my TARGET Table END
--Source Table
DECLARE @SourceTable TABLE
(
id [int] IDENTITY(1,1) NOT NULL,
city VARCHAR(25),
PhoneNumber VARCHAR(15),
state VARCHAR(5)
)
INSERT INTO @SourceTable
( city, PhoneNumber, state )
SELECT 'San Pedro','7609876788','CA'
UNION
SELECT 'Los Angles','7609876767','CA'
UNION
SELECT 'Palm Beach','8798887867','CA'
UNION
select 'Los Am','920786777', 'CA'
-- SELECT * FROM @SourceTable
--Merge STATEMENT
MERGE INTO @Targettable AS T
USING
(
SELECT
city
,PhoneNumber
,state
FROM @SourceTable
) AS S
ON
( S.city = T.city
AND S.PhoneNumber = T.PhoneNumber
AND S.state = T.state
)
WHEN NOT MATCHED THEN
INSERT (city,PhoneNumber,state,bid)
VALUES (S.city,S.PhoneNumber,S.state,7)
;
SELECT * FROM @Targettable
Here what I want at the end result
id city PhoneNumber state bid
1 Los Am 920786777 CA 2
2 Los Angles 7609876767 CA 1
3 Los Angles 7609876767 CA 2
4 New York 7609876908 NY 1
5 San Pedro 7609876788 CA 1
6 Palm Beach 8798887867 CA 7
7 Los Am 920786777 CA 7
Please let me know if my question is not clear.
Thank You.