Hari ini (27/3/2006) saya ikutan training Microsoft Partnet Education selama 2 hari sampai dengan besok. judul training kali ini adalah Realizing Your Potential Module.
Sebagai tutor dari training ini microsoft sengaja mendatangkan Martin Sawyer dari Vision2Result.
Materinya sangat menarik mulai dengan membahas tentang
-Self Awareness
-Self Control
-Motivation
-Empaty
-Comunication With Others
Hari ini saya belajar tenang hal yang menarik yang bukan technical yang mestinya bisa berguna untuk mengembangkan potensi diri saya untuk lingkungan dan masa depan. ternyata asik juga ikutan training kaya gini suasananya agak beda dari pada training SQL atau .NET
Trainingnya sendiri dilaksanakan di Ritz Carlton Hotel. diikuti oleh partner microsoft khususnya dari kevel mid management keatas.
Kita bisa gunakan cara dengan menampung semua informasi yang duplicate ke temporary data dengan terlebih dahulu menjumlahkan value yang ada, lalu kemudian data yang duplikat di table kita delete. Setelah itu data dari table temporary tadi dimasukkan ke dalam table, sehingga sekarang di table tidak terdapat informasi yang duplikat lagi.
Perlu diingat ketika kita menghapus sebuah row maka kita akan kehilangan informasi yang mungkin kita butuhkan. Jika column yang ada hanya berupa 3 column dan informasinya termasuk key field saja maka tidak akan ada masalah. Yang menjadi masalah adalah ketika ada field lain yang berpengaruh seperti pada contoh yang saya buat adalah field value ketika kita menghapus data yang duplikat tetapi nilai field valuenya berbeda kita akan kehilangan informasi dari field value tersebut.
Karenanya hendaknya informasi penting selain key tidak menjadi hilang dikarenakan key duplikat. Pada contoh dibawah saya menjumlahkan terlebih dahulu field value untuk setiap data yang duplikat dan disimpan ke temptable, untuk seterusnya dimasukkan kembali ke Mytable dengan nilai field value yang sudah di SUM.
Berikut Contoh Scrip untuk menghilangkan duplicate data (silahkan di copy paste di Query analyser)
-------------------------- Begin Script -----------------------------
--Create Table MyTable
CREATE TABLE [dbo].[MyTable](
[FieldA] [nchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[FieldB] [nchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[FieldC] [nchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[Value] [int] NULL
) ON [PRIMARY]
--Insert Data to Table
INSERT INTO [dbo].[MyTable] ([FieldA],[FieldB],[FieldC],[Value])
VALUES ('A1','B1','C1',10)
INSERT INTO [dbo].[MyTable] ([FieldA],[FieldB],[FieldC],[Value])
VALUES ('A2','B2','C2',20)
INSERT INTO [dbo].[MyTable] ([FieldA],[FieldB],[FieldC],[Value])
VALUES ('A3','B3','C3',30)
INSERT INTO [dbo].[MyTable] ([FieldA],[FieldB],[FieldC],[Value])
VALUES ('A3','B3','C3',40)
INSERT INTO [dbo].[MyTable] ([FieldA],[FieldB],[FieldC],[Value])
VALUES ('A4','B4','C4',50)
INSERT INTO [dbo].[MyTable] ([FieldA],[FieldB],[FieldC],[Value])
VALUES ('A4','B4','C4',60)
-- Display All MyTable Data
Select * from [MyTable]
--Copy All Duplicate Data To #TempTable Table and Sum the Duplicate value
Select FieldA,Fieldb,FieldC,Sum(Value) as Value into #TempTable
from [MyTable]
where cast(FieldA as nvarchar(5)) +
cast(FieldB as nvarchar(5)) +
cast(FieldC as nvarchar(5))
in (
select
cast(FieldA as nvarchar(5)) +
cast(FieldB as nvarchar(5)) +
cast(FieldC as nvarchar(5))
from [MyTable]
group by FieldA, FieldB, FieldC
having count(
cast(FieldA as nvarchar(5)) +
cast(FieldB as nvarchar(5)) +
cast(FieldC as nvarchar(5)))>1)
Group by FieldA,Fieldb,FieldC
--Display All temptable data
select * from #TempTable
--Delete All Duplicate data in MyTable
Delete from [MyTable]
where cast(FieldA as nvarchar(5)) +
cast(FieldB as nvarchar(5)) +
cast(FieldC as nvarchar(5))
in (
select distinct
cast(FieldA as nvarchar(5)) +
cast(FieldB as nvarchar(5)) +
cast(FieldC as nvarchar(5))
from [MyTable]
group by FieldA, FieldB, FieldC
having count(cast(FieldA as nvarchar(5)) +
cast(FieldB as nvarchar(5)) +
cast(FieldC as nvarchar(5)))>1)
--Insert Data from Temptable to MyTable
insert into [MyTable] Select FieldA,Fieldb,FieldC,Value from #TempTable
--Display All MyTable Data
select * from [MyTable]
-- Drop All Table
drop table [MyTable]
drop table #TempTable
------------------------ End Script ----------------------------