{"id":582,"date":"2017-01-22T10:32:55","date_gmt":"2017-01-22T02:32:55","guid":{"rendered":"http:\/\/suherman.asia\/w2\/?p=582"},"modified":"2017-01-22T10:32:55","modified_gmt":"2017-01-22T02:32:55","slug":"merge-statement-sql-server-2008","status":"publish","type":"post","link":"http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html","title":{"rendered":"Merge Statement in SQL Server 2008"},"content":{"rendered":"<p align=\"justify\">Salah satu fitur baru di SQL Server 2008 dalam T-SQL adalah \u2018Merge Statement\u2019.\u00a0 Merge Statement memungkinkan programmer melakukan statement insert, update dan delete dalam 1 buah statement.<!--more--><\/p>\n<p align=\"justify\">Cara klasik yang biasa digunakan untuk bisa melakukan sebuah proses insert, update dan delete dalam satu statement adalah dengan cara membuat sebuah store procedure. Pekerjaan ini sekarang dapat digantikan dengan melakukan T-SQL biasa, yaitu menggunakan Merge Statement.<\/p>\n<p align=\"justify\">Merge Statement ini memerlukan sebuah source table\/view sebagai acuan untuk melakukan operasi insert, update, delete pada tabel\/view target. kedua table\/view tersebut harus memiliki sebuah relational melalui Join Condition.<\/p>\n<p>Saya akan coba berikan sebuah ilustrasi agar dapat memahami Merge Statement.<\/p>\n<p align=\"justify\">saya menyiapkan sebuah <strong>tabel Purchases<\/strong> yang berisi pencatatan pembelian oleh customer pada satu atau beberapa produk yang terjadi minggu Ini.<\/p>\n<div>\n<pre id=\"codeSnippet\">USE AdventureWorks;\r\nGO\r\nIF OBJECT_ID (N'dbo.Purchases', N'U') IS NOT NULL \r\n    DROP TABLE dbo.Purchases;\r\nGO\r\nCREATE TABLE dbo.Purchases (\r\n    ProductID int, CustomerID int, PurchaseDate datetime, \r\n    CONSTRAINT PK_PurchProdID PRIMARY KEY(ProductID,CustomerID));\r\nGO\r\nINSERT INTO dbo.Purchases VALUES(707, 11794, '20060821'),\r\n(707, 15160, '20060825'),(708, 18529, '20060821'),\r\n(711, 11794, '20060821'),(711, 19585, '20060822'),\r\n(712, 14680, '20060825'),(712, 21524, '20060825'),\r\n(712, 19072, '20060821'),(870, 15160, '20060823'),\r\n(870, 11927, '20060824'),(870, 18749, '20060825');\r\nGO<\/pre>\n<\/div>\n<div>tabel purchases ini adalah sebagai source.<\/div>\n<p align=\"justify\">Kemudian didalam sebuah datawarehouse, ada sebuah tabel <strong>FactBuyingHabits <\/strong>yang memiliki fungsi merekam tanggal pembelian\u00a0 terakhir yang dilakukan oleh customer pada spesific product. Update data terakhir tabel <strong>FactBuyingHabits <\/strong>adalah minggu lalu. Tabel <strong>FactBuyingHabits <\/strong>dalam kasus ini kita jadikan sebagai tabel target.<\/p>\n<p>Berikut ini adalah T-SQL untuk membuat tabel <strong>FactBuyingHabits<\/strong><\/p>\n<div>\n<pre id=\"codeSnippet\">USE AdventureWorks;\r\nGO\r\nIF OBJECT_ID (N'dbo.FactBuyingHabits', N'U') IS NOT NULL \r\n    DROP TABLE dbo.FactBuyingHabits;\r\nGO\r\nCREATE TABLE dbo.FactBuyingHabits (\r\n    ProductID int, CustomerID int, LastPurchaseDate datetime, \r\n    CONSTRAINT PK_FactProdID PRIMARY KEY(ProductID,CustomerID));\r\nGO\r\nINSERT INTO dbo.FactBuyingHabits VALUES(707, 11794, '20060814'),\r\n(707, 18178, '20060818'),(864, 14114, '20060818'),\r\n(866, 13350, '20060818'),(866, 20201, '20060815'),\r\n(867, 20201, '20060814'),(869, 19893, '20060815'),\r\n(870, 17151, '20060818'),(870, 15160, '20060817'),\r\n(871, 21717, '20060817'),(871, 21163, '20060815'),\r\n(871, 13350, '20060815'),(873, 23381, '20060815');\r\nGO\r\n\r\n<\/pre>\n<\/div>\n<div><\/div>\n<div align=\"justify\">Bila kita perhatikan, didalam tabel purchases, customer no 11794 membeli sebuah product berkode 707, kejadian ini memiliki kesamaan dengan transaksi yang terjadi minggu lalu yang tercatat di tabel <strong>FactBuyingHabits <\/strong>. dalam hal ini, proses yang terjadi adalah proses update. data dari tabel <strong>Purchases<\/strong> akan mengupdate tabel <strong>FactBuyingHabits <\/strong>untuk customer no 11794 yang membeli sebuah product berkode 707. hal yang juga terjadi pada customer no 15160 yang membeli sebuah product berkode 870.<\/div>\n<div><\/div>\n<div>Sedangkan data yang lain pada tabel Purchases akan dilakukan proses insert ke tabel <strong>FactBuyingHabits <\/strong>.<\/div>\n<div><\/div>\n<div>Ilustrasi diatas dapat diselesaikan dengan menggunakan Merge Statement. sehingga dengan sebuah statement saja, kita dapat melakukan proses update dan insert.<\/div>\n<div>Berikut ini adalah T-SQL nya :<\/div>\n<div id=\"codeSnippetWrapper\">\n<pre id=\"codeSnippet\">MERGE dbo.FactBuyingHabits AS Target\r\nUSING (SELECT CustomerID, ProductID, PurchaseDate FROM dbo.Purchases) AS Source\r\nON (Target.ProductID = Source.ProductID AND Target.CustomerID = Source.CustomerID)\r\nWHEN MATCHED THEN\r\n    UPDATE SET Target.LastPurchaseDate = Source.PurchaseDate\r\nWHEN NOT MATCHED BY TARGET THEN\r\n    INSERT (CustomerID, ProductID, LastPurchaseDate)\r\n    VALUES (Source.CustomerID, Source.ProductID, Source.PurchaseDate)\r\nOUTPUT $action, Inserted.*, Deleted.*;<\/pre>\n<\/div>\n<div><\/div>\n<div>Simple bukan \ud83d\ude09<\/div>\n<div><\/div>\n<div>Selamat mencoba.<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Salah satu fitur baru di SQL Server 2008 dalam T-SQL adalah \u2018Merge Statement\u2019.\u00a0 Merge Statement memungkinkan programmer melakukan statement insert, update dan delete dalam 1 buah statement.<\/p>\n<p class=\"continue-reading-button\"> <a class=\"continue-reading-link\" href=\"http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html\">Continue reading<i class=\"crycon-right-dir\"><\/i><\/a><\/p>\n","protected":false},"author":1,"featured_media":409,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[87,14,17],"class_list":["post-582","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sql-server","tag-sql-server","tag-t-sql","tag-tutorial"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Merge Statement in SQL Server 2008 - Suherman Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Merge Statement in SQL Server 2008 - Suherman Blog\" \/>\n<meta property=\"og:description\" content=\"Salah satu fitur baru di SQL Server 2008 dalam T-SQL adalah \u2018Merge Statement\u2019.\u00a0 Merge Statement memungkinkan programmer melakukan statement insert, update dan delete dalam 1 buah statement. Continue reading\" \/>\n<meta property=\"og:url\" content=\"http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html\" \/>\n<meta property=\"og:site_name\" content=\"Suherman Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/emantin34\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/emantin34\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-22T02:32:55+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/suherman.asia\/w2\/wp-content\/uploads\/2014\/08\/22.png\" \/>\n\t<meta property=\"og:image:width\" content=\"430\" \/>\n\t<meta property=\"og:image:height\" content=\"394\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html#article\",\"isPartOf\":{\"@id\":\"http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html\"},\"author\":{\"name\":\"admin\",\"@id\":\"http:\/\/suherman.asia\/w2\/#\/schema\/person\/63654a129ee88012961c1a00415967dc\"},\"headline\":\"Merge Statement in SQL Server 2008\",\"datePublished\":\"2017-01-22T02:32:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html\"},\"wordCount\":290,\"commentCount\":3,\"publisher\":{\"@id\":\"http:\/\/suherman.asia\/w2\/#\/schema\/person\/63654a129ee88012961c1a00415967dc\"},\"image\":{\"@id\":\"http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html#primaryimage\"},\"thumbnailUrl\":\"http:\/\/suherman.asia\/w2\/wp-content\/uploads\/2014\/08\/22.png\",\"keywords\":[\"SQL Server\",\"T-SQL\",\"Tutorial\"],\"articleSection\":[\"SQL Server\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html\",\"url\":\"http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html\",\"name\":\"Merge Statement in SQL Server 2008 - Suherman Blog\",\"isPartOf\":{\"@id\":\"http:\/\/suherman.asia\/w2\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html#primaryimage\"},\"image\":{\"@id\":\"http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html#primaryimage\"},\"thumbnailUrl\":\"http:\/\/suherman.asia\/w2\/wp-content\/uploads\/2014\/08\/22.png\",\"datePublished\":\"2017-01-22T02:32:55+00:00\",\"breadcrumb\":{\"@id\":\"http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html#primaryimage\",\"url\":\"http:\/\/suherman.asia\/w2\/wp-content\/uploads\/2014\/08\/22.png\",\"contentUrl\":\"http:\/\/suherman.asia\/w2\/wp-content\/uploads\/2014\/08\/22.png\",\"width\":430,\"height\":394},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/suherman.asia\/w2\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Merge Statement in SQL Server 2008\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/suherman.asia\/w2\/#website\",\"url\":\"http:\/\/suherman.asia\/w2\/\",\"name\":\"Suherman Blog\",\"description\":\"Just Another Geek Site\",\"publisher\":{\"@id\":\"http:\/\/suherman.asia\/w2\/#\/schema\/person\/63654a129ee88012961c1a00415967dc\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/suherman.asia\/w2\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"http:\/\/suherman.asia\/w2\/#\/schema\/person\/63654a129ee88012961c1a00415967dc\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/suherman.asia\/w2\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/eed6f889b4c2af2a8c18cb3bf63de6a4?s=96&d=retro&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/eed6f889b4c2af2a8c18cb3bf63de6a4?s=96&d=retro&r=g\",\"caption\":\"admin\"},\"logo\":{\"@id\":\"http:\/\/suherman.asia\/w2\/#\/schema\/person\/image\/\"},\"sameAs\":[\"http:\/\/suherman.asia\",\"https:\/\/www.facebook.com\/emantin34\",\"https:\/\/x.com\/emantin34\"],\"url\":\"http:\/\/suherman.asia\/w2\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Merge Statement in SQL Server 2008 - Suherman Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html","og_locale":"en_US","og_type":"article","og_title":"Merge Statement in SQL Server 2008 - Suherman Blog","og_description":"Salah satu fitur baru di SQL Server 2008 dalam T-SQL adalah \u2018Merge Statement\u2019.\u00a0 Merge Statement memungkinkan programmer melakukan statement insert, update dan delete dalam 1 buah statement. Continue reading","og_url":"http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html","og_site_name":"Suherman Blog","article_publisher":"https:\/\/www.facebook.com\/emantin34","article_author":"https:\/\/www.facebook.com\/emantin34","article_published_time":"2017-01-22T02:32:55+00:00","og_image":[{"width":430,"height":394,"url":"http:\/\/suherman.asia\/w2\/wp-content\/uploads\/2014\/08\/22.png","type":"image\/png"}],"author":"admin","twitter_misc":{"Written by":"admin","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html#article","isPartOf":{"@id":"http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html"},"author":{"name":"admin","@id":"http:\/\/suherman.asia\/w2\/#\/schema\/person\/63654a129ee88012961c1a00415967dc"},"headline":"Merge Statement in SQL Server 2008","datePublished":"2017-01-22T02:32:55+00:00","mainEntityOfPage":{"@id":"http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html"},"wordCount":290,"commentCount":3,"publisher":{"@id":"http:\/\/suherman.asia\/w2\/#\/schema\/person\/63654a129ee88012961c1a00415967dc"},"image":{"@id":"http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html#primaryimage"},"thumbnailUrl":"http:\/\/suherman.asia\/w2\/wp-content\/uploads\/2014\/08\/22.png","keywords":["SQL Server","T-SQL","Tutorial"],"articleSection":["SQL Server"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html#respond"]}]},{"@type":"WebPage","@id":"http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html","url":"http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html","name":"Merge Statement in SQL Server 2008 - Suherman Blog","isPartOf":{"@id":"http:\/\/suherman.asia\/w2\/#website"},"primaryImageOfPage":{"@id":"http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html#primaryimage"},"image":{"@id":"http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html#primaryimage"},"thumbnailUrl":"http:\/\/suherman.asia\/w2\/wp-content\/uploads\/2014\/08\/22.png","datePublished":"2017-01-22T02:32:55+00:00","breadcrumb":{"@id":"http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html#primaryimage","url":"http:\/\/suherman.asia\/w2\/wp-content\/uploads\/2014\/08\/22.png","contentUrl":"http:\/\/suherman.asia\/w2\/wp-content\/uploads\/2014\/08\/22.png","width":430,"height":394},{"@type":"BreadcrumbList","@id":"http:\/\/suherman.asia\/w2\/merge-statement-sql-server-2008.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/suherman.asia\/w2"},{"@type":"ListItem","position":2,"name":"Merge Statement in SQL Server 2008"}]},{"@type":"WebSite","@id":"http:\/\/suherman.asia\/w2\/#website","url":"http:\/\/suherman.asia\/w2\/","name":"Suherman Blog","description":"Just Another Geek Site","publisher":{"@id":"http:\/\/suherman.asia\/w2\/#\/schema\/person\/63654a129ee88012961c1a00415967dc"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/suherman.asia\/w2\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"http:\/\/suherman.asia\/w2\/#\/schema\/person\/63654a129ee88012961c1a00415967dc","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/suherman.asia\/w2\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/eed6f889b4c2af2a8c18cb3bf63de6a4?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/eed6f889b4c2af2a8c18cb3bf63de6a4?s=96&d=retro&r=g","caption":"admin"},"logo":{"@id":"http:\/\/suherman.asia\/w2\/#\/schema\/person\/image\/"},"sameAs":["http:\/\/suherman.asia","https:\/\/www.facebook.com\/emantin34","https:\/\/x.com\/emantin34"],"url":"http:\/\/suherman.asia\/w2\/author\/admin"}]}},"_links":{"self":[{"href":"http:\/\/suherman.asia\/w2\/wp-json\/wp\/v2\/posts\/582","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/suherman.asia\/w2\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/suherman.asia\/w2\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/suherman.asia\/w2\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/suherman.asia\/w2\/wp-json\/wp\/v2\/comments?post=582"}],"version-history":[{"count":1,"href":"http:\/\/suherman.asia\/w2\/wp-json\/wp\/v2\/posts\/582\/revisions"}],"predecessor-version":[{"id":583,"href":"http:\/\/suherman.asia\/w2\/wp-json\/wp\/v2\/posts\/582\/revisions\/583"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/suherman.asia\/w2\/wp-json\/wp\/v2\/media\/409"}],"wp:attachment":[{"href":"http:\/\/suherman.asia\/w2\/wp-json\/wp\/v2\/media?parent=582"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/suherman.asia\/w2\/wp-json\/wp\/v2\/categories?post=582"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/suherman.asia\/w2\/wp-json\/wp\/v2\/tags?post=582"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}