Skip to main content

Merge Statement Part-1

 --Create Source_Student
 if object_id('Source_Student') is null
 create table Source_Student(id int identity(1,1) ,Name varchar(20)Marks int)
               
--Insert Some Sample Data to Source_Student
  insert Source_Student (Name,Marks) values('Rakesh',500)
  insert Source_Student (Name,Marks) values('Raju',400)
               
--Create Target_Student
 if object_id('Target_Student') is null
 create table Target_Student(id int ,Name varchar(20), Marks int)
               
--Insert Some Sample Data to Target_Student
  insert Target_Student (id,Name,Marks) values(1,'Rakesh',600)
  insert Target_Student (id,Name,Marks) values(3,'Nani',700)
               
  --Select Two Tables Data
   select * from Source_Student
   select * from Target_Student

In the Source table Id -1 record need to update marks column. Id-2 record need to insert in the Target Column. In the Target column Id-3 record need delete from Target column.
  --Run Merge Satement
  merge into Target_Student as trg
   using  Source_Student  as src 
   on trg.Name=Src.Name
    when matched then update
              set trg.Name=src.Name, trg.Marks=src.Marks
    when not matched then insert (id,Name,Marks)
                                    values(src.id,src.Name,src.Marks)
   when not matched by source then delete;

Select * from Target_Student
     





Comments

Post a Comment

Popular posts from this blog

SP_MSForeachtable

Some times we need to query on the all the tables in one data base single statement. We use SP_MSForeachtable this is known as undocumented stored procedures . These all are system stored procedures. These stored procedures is place in Master database. NOTE: Please do not run all these queries in Production environment Example: create database UnDocumentedStoredProcedure use UnDocumentedStoredProcedure create table Emp ( ID int identity ( 1 , 1 ), Name varchar ( 50 ), Salary int ) insert into Emp ( Name , Salary ) values ( 'rakesh' , 8000 ),( 'raju' , 9000 ) create table Dept ( ID int identity ( 1 , 1 ), DeptName varchar ( 100 ) ) insert into Dept ( DeptName ) values ( 'CSE' ),( 'IT' ) We are created new database and also created some table with some dummy data. Select all tables data: exec sp_MSForeachtable 'select * from ?...

SET ROWCOUNT

Stop the processing after the number of rows has been affected. Example: Step-1: Create the Table and insert some sample data. CREATE TABLE STUDENT ( ID INT IDENTITY ( 1 , 1 ) PRIMARY KEY , STUDENTNAME VARCHAR ( 100 ) NOT NULL , LIVINGLOCATION VARCHAR ( 100 ) NULL ) INSERT INTO STUDENT ( STUDENTNAME , LIVINGLOCATION ) SELECT 'Rakesh' , 'Hyderabad' UNION ALL SELECT 'Raju' , 'Delhi' UNION ALL SELECT 'Madhu' , 'Hyderabad' UNION ALL SELECT 'Naresh' ,NULL UNION ALL SELECT 'Venaktesh' , 'Chennai' In above Insert Statement we inserted 5 sample records. Step-2: Using SET ROWCOUT SET ROWCOUNT 3 ; SELECT * FROM STUDENT ORDER BY ID DESC It will affected 3 rows after that processing has been stopped. Step-2: Using SET ROWCOUT 0 SET ROWCOUNT 0 ; SELECT * FROM STUDENT ORDER BY ID DESC ...