
--Lama		                  |  Baru	
--No Polis	    No Proposal	|  No Polis	    No Proposal
--2015.0009.1   2015.0002	  |  2016.0001.1	  2016.0010
--2015.0010.1	  2015.0006	  |  2016.0002.1	  2016.0008
--2015.0011.1	  2015.0007	  |  2016.0003.1	  2016.0011

DECLARE
  --@no_polis_lama    VARCHAR(11) = '2015.0009.1',
  --@no_proposal_lama VARCHAR(9)  = '2015.0002',
  --@no_polis_baru    VARCHAR(11) = '2016.0001.1',
  --@no_proposal_baru VARCHAR(9)  = '2016.0010'
  
  --@no_polis_lama    VARCHAR(11) = '2015.0010.1',
  --@no_proposal_lama VARCHAR(9)  = '2015.0006',
  --@no_polis_baru    VARCHAR(11) = '2016.0002.1',
  --@no_proposal_baru VARCHAR(9)  = '2016.0008'
  
  @no_polis_lama    VARCHAR(11) = '2015.0011.1',
  @no_proposal_lama VARCHAR(9)  = '2015.0007',
  @no_polis_baru    VARCHAR(11) = '2016.0003.1',
  @no_proposal_baru VARCHAR(9)  = '2016.0011'

DECLARE @sudah_ada TABLE ( no_polis_baru VARCHAR(11),
                           no_proposal_baru VARCHAR(9),
                           no_peserta_baru VARCHAR(12),
                           nama_peserta_baru VARCHAR(30),
                           rek_no_yg_ada VARCHAR(30),
                           rek_no_sebelumnya VARCHAR(30),
                           rek_nama_yg_ada VARCHAR(50),
                           rek_nama_sebelumnya VARCHAR(50)
                         )

DECLARE 
  @cursor_no_polis_lama VARCHAR(11),
  @cursor_no_polis_baru VARCHAR(11),
  @cursor_no_proposal_lama VARCHAR(9),
  @cursor_no_proposal_baru VARCHAR(9),
  @no_peserta_lama VARCHAR(12),
  @no_peserta_baru VARCHAR(12),
  @nama_peserta_lama VARCHAR(30),
  @nama_peserta_baru VARCHAR(30)

DECLARE list_cursor CURSOR FAST_FORWARD FOR  
SELECT
  lama.No_Polis AS No_Polis_Lama,
  baru.No_Polis AS No_Polis_Baru,
  lama.No_Proposal AS No_Proposal_Lama,
  baru.No_Proposal AS No_Proposal_Baru,
  lama.No_Peserta AS No_Peserta_Lama,
  baru.No_Peserta AS No_Peserta_Baru,
	lama.Nama AS Nama_Lama,
	baru.Nama AS Nama_Baru
FROM
	( SELECT
	  	pst1.*,
	  	pa1.No_Polis
	  FROM
	  	dbo.Peserta AS pst1 INNER JOIN
	  	dbo.Polis_Asuransi AS pa1 ON pst1.No_Proposal = pa1.No_Proposal
	  WHERE
	    pst1.No_Proposal = @no_proposal_lama
	    AND pa1.No_Polis = @no_polis_lama -- buat meyakinkan saja
	    AND pst1.Sebagai = 0
  ) AS lama INNER JOIN --LEFT JOIN
	( SELECT
	  	pst2.*,
	  	pa2.No_Polis
	  FROM
	  	dbo.Peserta AS pst2 INNER JOIN
	  	dbo.Polis_Asuransi AS pa2 ON pst2.No_Proposal = pa2.No_Proposal 
	  WHERE
	    pst2.No_Proposal = @no_proposal_baru
	    AND pa2.No_Polis = @no_polis_baru
	    AND pst2.Sebagai = 0
  ) AS baru ON LEFT(lama.Nama,5) = LEFT(baru.Nama,5)
               AND lama.Tgl_Lahir = baru.Tgl_Lahir
ORDER BY
  lama.No_Peserta


OPEN list_cursor  
FETCH NEXT FROM list_cursor INTO @cursor_no_polis_lama, @cursor_no_polis_baru, @cursor_no_proposal_lama, @cursor_no_proposal_baru, @no_peserta_lama, @no_peserta_baru, @nama_peserta_lama, @nama_peserta_baru 

WHILE @@FETCH_STATUS = 0  
BEGIN  

  -- cek ditempat baru
  IF EXISTS(SELECT 1 FROM dbo.Peserta_Rekening WHERE No_Polis = @cursor_no_polis_baru AND No_Peserta = @no_peserta_baru)
    BEGIN  -- jika sudah ada
      DECLARE
        @rek_no_yg_ada VARCHAR(30),
        @rek_nama_yg_ada VARCHAR(50),
        @rek_no_sebelumnya VARCHAR(30),
        @rek_nama_sebelumnya VARCHAR(50)
        
      SELECT
      	@rek_no_yg_ada = Rek_No,
      	@rek_nama_yg_ada = Rek_Nama
      FROM
        dbo.Peserta_Rekening 
      WHERE 
        No_Polis = @cursor_no_polis_baru AND No_Peserta = @no_peserta_baru
      
      SELECT
      	@rek_no_sebelumnya = Rek_No,
      	@rek_nama_sebelumnya = Rek_Nama
      FROM
        dbo.Peserta_Rekening 
      WHERE 
        No_Polis = @cursor_no_polis_lama AND No_Peserta = @no_peserta_lama
      	
      INSERT INTO @sudah_ada
              (no_polis_baru,
               no_proposal_baru,
               no_peserta_baru,
               nama_peserta_baru,
               rek_no_yg_ada,
               rek_no_sebelumnya,
               rek_nama_yg_ada,
               rek_nama_sebelumnya)
      VALUES
              (@cursor_no_polis_baru, -- no_polis_baru - varchar(11)
               @cursor_no_proposal_baru, -- no_proposal_baru - varchar(9)
               @no_peserta_baru, -- no_peserta_baru - varchar(12)
               @nama_peserta_baru, -- nama_peserta_baru - varchar(30)
               @rek_no_yg_ada, -- rek_no_yg_ada - varchar(30)
               @rek_no_sebelumnya, -- rek_no_sebelumnya - varchar(30)
               @rek_nama_yg_ada, -- rek_nama_yg_ada - varchar(50)
               @rek_nama_sebelumnya  -- rek_nama_sebelumnya - varchar(50)
               )
    END
  ELSE
    BEGIN  -- jika belum ada, insert
      INSERT INTO dbo.temp_prib_Peserta_Rekening_OJK
              (No_Polis,
               No_Peserta,
               Kode_Bank,
               Rek_No,
               Rek_Nama,
               Bank_Nama,
               Bank_Cabang,
               Bank_Alamat,
               Bank_Asal,
               Bank_Lokasi,
               Sandi_BI,
               Status,
               Create_By,
               Create_Date,
               Change_By,
               Change_Date,
               No_Polis_Lama,
               No_Polis_Baru,
               No_Proposal_Lama,
               No_Proposal_Baru,
               No_Peserta_Lama,
               No_Peserta_Baru,
               Nama_Peserta_Lama,
               Nama_Peserta_Baru)
      SELECT
      	  @cursor_no_polis_baru, --No_Polis,     -- No_Polis - varchar(11)
      	  @no_peserta_baru, --No_Peserta, -- No_Peserta - varchar(12)
      	  Kode_Bank,                      -- Kode_Bank - varchar(3)
      	  Rek_No,                         -- Rek_No - varchar(30)
      	  Rek_Nama,                       -- Rek_Nama - varchar(50)
      	  Bank_Nama,                      -- Bank_Nama - varchar(40)
      	  Bank_Cabang,                    -- Bank_Cabang - varchar(60)
      	  Bank_Alamat,                    -- Bank_Alamat - varchar(60)
      	  Bank_Asal,                      -- Bank_Asal - varchar(5)
      	  Bank_Lokasi,                    -- Bank_Lokasi - varchar(1)
      	  Sandi_BI,                       -- Sandi_BI - varchar(7)
      	  Status,                         -- Status - varchar(1)
      	  Create_By,                      -- Create_By - varchar(4)
      	  Create_Date,                    -- Create_Date - datetime
      	  Change_By,                      -- Change_By - varchar(4)
      	  Change_Date,                    -- Change_Date - datetime
      	  @cursor_no_polis_lama,                 -- No_Polis_Lama - varchar(11)
      	  @cursor_no_polis_baru,                 -- No_Polis_Baru - varchar(11)
      	  @cursor_no_proposal_lama,              -- No_Proposal_Lama - varchar(9)
      	  @cursor_no_proposal_baru,              -- No_Proposal_Baru - varchar(9)
      	  @no_peserta_lama,               -- No_Peserta_Lama - varchar(12)
      	  @no_peserta_baru,               -- No_Peserta_Baru - varchar(12)
      	  @nama_peserta_lama,             -- Nama_Peserta_Lama - varchar(50)
      	  @nama_peserta_baru              -- Nama_Peserta_Baru - varchar(50)
      FROM
      	dbo.Peserta_Rekening
      WHERE
        No_Polis = @cursor_no_polis_lama
        AND No_Peserta = @no_peserta_lama
    END
  

  FETCH NEXT FROM list_cursor INTO @cursor_no_polis_lama, @cursor_no_polis_baru, @cursor_no_proposal_lama, @cursor_no_proposal_baru, @no_peserta_lama, @no_peserta_baru, @nama_peserta_lama, @nama_peserta_baru   
END  

CLOSE list_cursor  
DEALLOCATE list_cursor 

SELECT
	*
FROM
	@sudah_ada