Project

General

Profile

Support #147 » SQLQuery1.sql

Saswanto Tampan, 01/20/2021 01:42 PM

 
1
??
2

3
DECLARE @landscape VARCHAR(3) = '100'
4

5
DECLARE @companycode VARCHAR(5) = '1000'
6

7
DECLARE @emp_status VARCHAR(5) = ''
8

9
DECLARE @emp_type VARCHAR(5)= ''
10

11
DECLARE @emp_area VARCHAR(5)= ''
12

13
DECLARE @emp_office VARCHAR(5) = ''
14

15
DECLARE @pay_group VARCHAR(2) = ''
16

17
DECLARE @now VARCHAR(12) = dbo.fn_formatdatetime(GETDATE(), 'yyyymmdd')
18

19
--DECLARE @now VARCHAR(12) = '20150901'
20

21

22

23
       select emp_id ,
24

25
                edu_level ,
26

27
                major ,
28

29
                institution ,
30

31
                gpa ,
32

33
                edu_level.description ,
34

35
				edu_level.description AS edu_level_desc ,
36

37
                start_date
38

39
				INTO #tbl_3
40

41
        FROM    dbo.hr_md_emp_md0008 AS edu
42

43
                LEFT JOIN base_cust_ref_edu_level AS edu_level ON edu.edu_level = edu_level.code
44

45
        WHERE   end_date = ( SELECT   MAX(end_date)
46

47
                               FROM     dbo.hr_md_emp_md0008 AS x
48

49
                               WHERE    x.emp_id = edu.emp_id AND x.edu_type='F'
50

51
                             )
52

53
		ORDER BY edu.seq DESC
54

55
    
56

57
    
58

59
        SELECT DISTINCT
60

61
                a.org_id_01 AS level1,
62

63
                a.org_name_01 AS level1_desc,
64

65
                a.org_id_02 AS level2,
66

67
                a.org_name_02 AS level2_desc,
68

69
                a.org_id_03 AS level3,
70

71
                a.org_name_03 AS level3_desc,
72

73
                a.org_id_04 AS level4,
74

75
                a.org_name_04 AS level4_desc ,
76

77
                a.org_id_05 AS level5,
78

79
                a.org_name_05 AS level5_desc ,
80

81
                a.org_id_06 AS level6,
82

83
                a.org_name_06 AS level6_desc,
84

85
                a.org_id_07 AS level7,
86

87
                a.org_name_07 AS level7_desc,
88

89
                a.org_id_08 AS level8,
90

91
                a.org_name_08 AS level8_desc,
92

93
                md2.emp_id AS emp_id
94

95
				INTO #tbl_1
96

97
        FROM    dbo.GetOrgInOrgWide('00000001', @now, @landscape) AS a
98

99
                INNER JOIN dbo.hr_md_emp_md0002 AS md2 ON a.org_id = md2.organization
100

101
                                                          AND md2.start_date <= @now
102

103
                                                          AND md2.end_date >= @now                                                          	 
104

105
	
106

107
DECLARE @tbl_2 TABLE
108

109
    (
110

111
      emp_id VARCHAR(8) ,
112

113
      movement_type VARCHAR(2) ,
114

115
      jumlah DECIMAL(18, 0)
116

117
    )	
118

119
INSERT  INTO @tbl_2
120

121
        SELECT DISTINCT
122

123
                emp_id ,
124

125
                movement_type ,
126

127
                COUNT(start_date)
128

129
        FROM    dbo.hr_md_emp_md0002 WITH ( NOLOCK )
130

131
        WHERE   movement_type = '60'
132

133
        GROUP BY emp_id , movement_type
134

135

136

137

138

139

140

141
        SELECT  tbl2.* ,
142

143
               '' as datedifff
144

145
			   INTO #tbl_md2_last
146

147
        FROM    ( SELECT    landscape ,
148

149
                            emp_id ,
150

151
                            start_date ,
152

153
                            end_date ,
154

155
                            movement_type ,
156

157
                            reason ,
158

159
                            company_id ,
160

161
                            costcenter ,
162

163
                            employee_area ,
164

165
                            employee_office ,
166

167
                            employee_status ,
168

169
                            employee_type ,
170

171
                            employee_subtype ,
172

173
                            tax_office ,
174

175
                            payroll_group ,
176

177
                            organization ,
178

179
                            position ,
180

181
                            job ,
182

183
                            remark ,
184

185
                            CASE WHEN ISNULL(additional_1, '') = ''
186

187
                                 THEN start_date
188

189
                                 ELSE additional_1
190

191
                            END AS realDate,
192

193
							CASE WHEN ISNULL(additional_1, '') = ''
194

195
                                 THEN start_date
196

197
                                 ELSE additional_1
198

199
                            END AS additional_1
200

201
                  FROM      dbo.hr_md_emp_md0002 WITH ( NOLOCK )
202

203
                ) AS tbl2
204

205
                        
206

207
SELECT DISTINCT
208

209
        md01.emp_id ,
210

211
        md01.full_name ,
212

213
        md02_last.company_id ,
214

215
        CONVERT(DATE, md02_hiring.start_date) AS join_date ,
216

217
        CASE WHEN md02_last.movement_type = '20' THEN
218

219
                  CONVERT(DATE, md02_last.start_date)
220

221
             ELSE ( SELECT  CONVERT(DATE, date)
222

223
                    FROM    hr_md_emp_md0039
224

225
                    WHERE   date_type = '04'
226

227
                            AND emp_id = md02_last.emp_id
228

229
                  )
230

231
        END permanent_date ,
232

233
        CONVERT(DATE, md39_group.date) AS join_group ,
234

235
        mov_type_last.description AS effective_type_status ,
236

237
        CONVERT(DATE, md02_last.start_date) AS effective_date ,
238

239
        CONVERT(DATE, md02_last.additional_1) AS real_date ,
240

241
        md02_last.employee_status ,
242

243
        emp_status_last.description AS emp_status ,
244

245
        CONVERT(DATE, md02_resign.start_date) AS resign_date ,
246

247
        emp_type_last.description AS employee_type ,
248

249
        CASE WHEN ( md39_contract.date >= @now )
250

251
             THEN CONVERT(DATE, md39_contract.date)
252

253
             ELSE NULL
254

255
        END expired_status ,
256

257
        tbl_2.jumlah AS contract_extent ,
258

259
        ws_type.description AS workschedule_type ,
260

261
        md03.tax_status ,
262

263
        md02_last.employee_area AS area_code ,
264

265
        emp_area_last.description AS area_desc ,
266

267
        md02_last.employee_office AS office_code ,
268

269
        emp_office_last.emp_subarea_description AS office_desc ,
270

271
        md02_last.payroll_group AS payroll_group_id ,
272

273
        payroll_group_last.description AS payroll_group ,
274

275
        emp_sub_type_desc.description AS employee_subtype ,
276

277
        tbl_1.level1 ,
278

279
        tbl_1.level1_desc ,
280

281
        tbl_1.level2 ,
282

283
        tbl_1.level2_desc ,
284

285
        tbl_1.level4 ,
286

287
        tbl_1.level4_desc ,
288

289
        tbl_1.level5 ,
290

291
        tbl_1.level5_desc ,
292

293
        tbl_1.level8 ,
294

295
        tbl_1.level8_desc ,
296

297
        md02_last.costcenter AS cc_code ,
298

299
        cc.description AS cc_desc ,
300

301
        md02_last.position AS pos_code ,
302

303
        p.description AS pos_desc ,
304

305
        pay_grade.description AS pay_grade ,
306

307
        md01.nick_name ,
308

309
        gender.description AS gender ,
310

311
        md01.birth_place ,
312

313
        CONVERT (DATE, md01.birth_date) AS birth_date ,
314

315
        md06_resident.street ,
316

317
        ( SELECT    description
318

319
          FROM      base_cust_ref_province
320

321
          WHERE     code = md06_resident.province
322

323
        ) AS province ,
324

325
        md06_resident.location ,
326

327
        md06_resident.postalcode ,
328

329
        md06_resident.telp_num ,
330

331
        md12_hp.comm_description AS cellphone ,
332

333
        md12_email.comm_description AS email ,
334

335
        religion.description AS religion ,
336

337
        marital_status.description AS marital_status ,
338

339
        md11.blood_type ,
340

341
        md13_ktp.id_description AS id ,
342

343
        CONVERT(DATE, md13_ktp.end_date) AS ktp_expired ,
344

345
        md06_ktp.street AS ktp_address ,
346

347
        ( SELECT    description
348

349
          FROM      base_cust_ref_province
350

351
          WHERE     code = md06_ktp.province
352

353
        ) AS ktp_province ,
354

355
        md06_ktp.postalcode AS ktp_postalcode ,
356

357
        ( SELECT    description
358

359
          FROM      base_cust_ref_id_type
360

361
          WHERE     code = md13_a.id_type
362

363
        ) AS id_a ,
364

365
        md13_a.id_description AS id_a_no ,
366

367
        CONVERT(DATE, md13_a.end_date) AS id_a_expired ,
368

369
        ( SELECT    description
370

371
          FROM      base_cust_ref_id_type
372

373
          WHERE     code = md13_b.id_type
374

375
        ) AS id_b ,
376

377
        md13_b.id_description AS id_b_no ,
378

379
        CONVERT(DATE, md13_b.end_date) AS id_b_expired ,
380

381
        ( SELECT    description
382

383
          FROM      base_cust_ref_id_type
384

385
          WHERE     code = md13_c.id_type
386

387
        ) AS id_c ,
388

389
        md13_c.id_description AS id_c_no ,
390

391
        CONVERT(DATE, md13_c.end_date) AS id_c_expired ,
392

393
        md13_passport.id_description AS id_password_no ,
394

395
        CONVERT(DATE, md13_passport.end_date) AS id_password_expired ,
396

397
        md06_cp.contact_person AS cp_name ,
398

399
        md06_cp.street AS cp_address ,
400

401
        md06_cp.telp_num AS cp_tlp ,
402

403
        md06_cp.cellphone_num AS cp_cell ,
404

405
        md03.npwp ,
406

407
        CASE WHEN md03.npwp_date = '' THEN ''
408

409
             ELSE dbo.fn_formatdatetime(md03.npwp_date, 'dd mmm yyyy')
410

411
        END AS npwp_date ,
412

413
        md03.jamsostek_type ,
414

415
        jams_type.description AS jams_type ,
416

417
        md03.jamsostek ,
418

419
        CASE WHEN md03.additional_1 = '' THEN ''
420

421
             ELSE dbo.fn_formatdatetime(md03.additional_1, 'dd mmm yyyy')
422

423
        END AS additional_1 ,
424

425
        pension_type.description AS pension_type ,
426

427
        md03.pension_id ,
428

429
        CASE WHEN md03.additional_2 = '' THEN ''
430

431
             ELSE dbo.fn_formatdatetime(md03.additional_2, 'dd mmm yyyy')
432

433
        END AS additional_2 ,
434

435
        cust_bank_id.description AS bank_id ,
436

437
        md03.bank_account ,
438

439
        md03.bank_account_name ,
440

441
        tbl_3.edu_level_desc ,
442

443
        tbl_3.major ,
444

445
        tbl_3.institution ,
446

447
        tbl_3.gpa ,
448

449
        md02_last.remark 
450

451
FROM    dbo.hr_md_emp_md0001 md01 --@tbl_personal AS md01
452

453
        LEFT JOIN base_cust_ref_gender AS gender ON md01.gender = gender.code
454

455
        LEFT JOIN base_cust_ref_religion AS religion ON md01.religion = religion.code
456

457
        LEFT JOIN base_cust_ref_marital_status AS marital_status ON md01.marital_status = marital_status.code
458

459
        LEFT JOIN hr_md_emp_md0002 AS md02_hiring ON md01.emp_id = md02_hiring.emp_id			-- Hiring Date
460

461
                                                     AND md02_hiring.movement_type = '10'
462

463
        LEFT JOIN #tbl_md2_last AS md02_last ON md01.emp_id = md02_last.emp_id
464

465
                                                AND md02_last.start_date <= @now		-- Last Assignment dirubah
466

467
                                                AND md02_last.end_date >= @now
468

469
                                                AND md02_last.payroll_group <> '99'
470

471
                                                AND md02_last.datedifff = ( SELECT
472

473
                                                              MIN(tbl_last.datedifff)
474

475
                                                              FROM
476

477
                                                              #tbl_md2_last tbl_last
478

479
                                                              WHERE
480

481
                                                              tbl_last.start_date <= @now  --dirubah
482

483
                                                              AND tbl_last.end_date >= @now
484

485
                                                              AND tbl_last.payroll_group <> '99'
486

487
                                                              AND md01.emp_id = tbl_last.emp_id
488

489
                                                              )
490

491
        LEFT JOIN base_cust_ref_mov_type AS mov_type_last ON md02_last.movement_type = mov_type_last.code
492

493
        LEFT JOIN base_cust_ref_emp_type AS emp_type_last ON md02_last.employee_type = emp_type_last.emp_type
494

495
        LEFT JOIN base_cust_ref_emp_area AS emp_area_last ON md02_last.employee_area = emp_area_last.emp_area
496

497
        LEFT JOIN base_cust_ref_emp_office AS emp_office_last ON md02_last.employee_office = emp_office_last.emp_subarea
498

499
        LEFT JOIN base_cust_ref_payroll_group AS payroll_group_last ON md02_last.payroll_group = payroll_group_last.payroll_group
500

501
        LEFT JOIN base_cust_ref_emp_status AS emp_status_last ON md02_last.employee_status = emp_status_last.emp_status
502

503
        LEFT JOIN base_cust_ref_emp_subtype AS emp_sub_type_desc ON md02_last.employee_subtype = emp_sub_type_desc.emp_subtype
504

505
        LEFT OUTER JOIN hr_md_orm_object cc ON cc.landscape = @landscape
506

507
                                               AND cc.start_date <= @now
508

509
                                               AND cc.end_date >= @now
510

511
                                               AND md02_last.costcenter = cc.object
512

513
                                               AND cc.class = 'CC'
514

515
        LEFT OUTER JOIN hr_md_orm_object o ON o.landscape = @landscape
516

517
                                              AND o.start_date <= @now
518

519
                                              AND o.end_date >= @now
520

521
                                              AND md02_last.organization = o.object
522

523
                                              AND o.class = 'O'
524

525
        LEFT OUTER JOIN hr_md_orm_object p ON p.landscape = @landscape
526

527
                                              AND p.start_date <= @now
528

529
                                              AND p.end_date >= @now
530

531
                                              AND md02_last.position = p.object
532

533
                                     --AND md02_last.payroll_group <> '99'
534

535
                                              AND p.class = 'P'
536

537
        LEFT OUTER JOIN hr_md_orm_object j ON j.landscape = @landscape
538

539
                                              AND j.start_date <= @now
540

541
                                              AND j.end_date >= @now
542

543
                                              AND md02_last.job = j.object
544

545
                                              AND j.class = 'J'
546

547
        LEFT JOIN hr_md_emp_md0039 AS md39_group ON md01.emp_id = md39_group.emp_id				-- Date Spesification, Join Date Group
548

549
                                                    AND md39_group.date_type = '10'
550

551
                                                    AND md39_group.start_date <= @now
552

553
                                                    AND md39_group.end_date >= @now
554

555
        LEFT JOIN hr_md_emp_md0002 AS md02_resign ON md01.emp_id = md02_resign.emp_id			-- Resign
556

557
                                                     AND md02_resign.movement_type = '80'
558

559
                                                    --AND md02_resign.end_date = '99991231'
560

561
        LEFT JOIN hr_md_emp_md0002 AS md02_contract ON md01.emp_id = md02_contract.emp_id
562

563
                                                       AND md02_contract.movement_type = '60'
564

565
        LEFT JOIN hr_md_emp_md0039 AS md39_contract ON md01.emp_id = md39_contract.emp_id		-- Date Spesification, expired contract dengan code 02
566

567
                                                       AND md39_contract.date_type = '02'
568

569
                                                       AND md39_contract.seq = ( SELECT
570

571
                                                              MAX(md39_contracte.seq)
572

573
                                                              FROM
574

575
                                                              hr_md_emp_md0039 md39_contracte
576

577
                                                              WHERE
578

579
                                                              md39_contracte.emp_id = md39_contract.emp_id
580

581
                                                              AND md39_contracte.date_type = '02'
582

583
                                                              )
584

585
        LEFT JOIN hr_md_emp_md0025 AS md25 ON md01.emp_id = md25.emp_id							-- Working Schedule
586

587
                                              AND md25.start_date <= @now
588

589
                                              AND md25.end_date >= @now
590

591
        LEFT JOIN hr_tm_workschedule_type AS ws_type ON md25.ws_type = ws_type.workschedule_type
592

593
        LEFT JOIN hr_md_emp_md0003 AS md03 ON md01.emp_id = md03.emp_id						--Payroll Basic
594

595
                                              AND md03.start_date <= @now
596

597
                                              AND md03.end_date >= @now
598

599
        LEFT JOIN base_cust_ref_jamsostek_type AS jams_type ON md03.jamsostek_type = jams_type.code
600

601
        LEFT JOIN base_cust_ref_pension_type AS pension_type ON md03.pension_type = pension_type.code
602

603
        LEFT JOIN base_cust_ref_bankid AS cust_bank_id ON md03.bank_id = cust_bank_id.code
604

605
        LEFT JOIN base_cust_ref_pay_grade AS pay_grade ON md03.pay_grade = pay_grade.pay_grade
606

607
        LEFT JOIN hr_md_emp_md0006 AS md06_resident ON md01.emp_id = md06_resident.emp_id
608

609
                                                       AND md06_resident.address_type = '02'
610

611
                                                       AND md06_resident.start_date <= @now
612

613
                                                       AND md06_resident.end_date >= @now
614

615
                                                       AND md06_resident.seq = ( SELECT
616

617
                                                              MAX(md06_st.seq)
618

619
                                                              FROM
620

621
                                                              hr_md_emp_md0006 md06_st
622

623
                                                              WHERE
624

625
                                                              md06_st.address_type = '02'
626

627
                                                              AND md06_st.emp_id = md06_resident.emp_id
628

629
                                                              )
630

631
        LEFT JOIN hr_md_emp_md0012 AS md12_hp ON md01.emp_id = md12_hp.emp_id
632

633
                                                 AND md12_hp.comm_type = '02'
634

635
                                                 AND md12_hp.seq = ( SELECT
636

637
                                                              MAX(md12_st.seq)
638

639
                                                              FROM
640

641
                                                              hr_md_emp_md0012 md12_st
642

643
                                                              WHERE
644

645
                                                              md12_st.emp_id = md12_hp.emp_id
646

647
                                                              AND md12_st.comm_type = '02'
648

649
                                                              )
650

651
        LEFT JOIN hr_md_emp_md0012 AS md12_email ON md01.emp_id = md12_email.emp_id
652

653
                                                    AND md12_email.comm_type = '04'
654

655
                                                    AND md12_email.seq = ( SELECT
656

657
                                                              MAX(md12e_st.seq)
658

659
                                                              FROM
660

661
                                                              hr_md_emp_md0012 md12e_st
662

663
                                                              WHERE
664

665
                                                              md12e_st.emp_id = md12_email.emp_id
666

667
                                                              AND md12e_st.comm_type = '04'
668

669
                                                              )
670

671
        LEFT JOIN hr_md_emp_md0011 AS md11 ON md01.emp_id = md11.emp_id
672

673
        LEFT JOIN hr_md_emp_md0013 AS md13_ktp ON md01.emp_id = md13_ktp.emp_id
674

675
                                                  AND md13_ktp.id_type = '01'
676

677
                                                  AND md13_ktp.seq = ( SELECT
678

679
                                                              MAX(md13_ktpe.seq)
680

681
                                                              FROM
682

683
                                                              hr_md_emp_md0013 md13_ktpe
684

685
                                                              WHERE
686

687
                                                              md13_ktpe.emp_id = md13_ktp.emp_id
688

689
                                                              AND md13_ktpe.id_type = '01'
690

691
                                                              )
692

693
        LEFT JOIN hr_md_emp_md0013 AS md13_a ON md01.emp_id = md13_a.emp_id
694

695
                                                AND md13_a.id_type = '03'
696

697
        LEFT JOIN hr_md_emp_md0013 AS md13_b ON md01.emp_id = md13_b.emp_id
698

699
                                                AND md13_b.id_type = '04'
700

701
        LEFT JOIN hr_md_emp_md0013 AS md13_c ON md01.emp_id = md13_c.emp_id
702

703
                                                AND md13_c.id_type = '05'
704

705
        LEFT JOIN hr_md_emp_md0013 AS md13_passport ON md01.emp_id = md13_passport.emp_id
706

707
                                                       AND md13_passport.id_type = '02'
708

709
        LEFT JOIN hr_md_emp_md0006 AS md06_ktp ON md01.emp_id = md06_ktp.emp_id
710

711
                                                  AND md06_ktp.address_type = '01'
712

713
                                                  AND md06_ktp.start_date <= @now
714

715
                                                  AND md06_ktp.end_date >= @now
716

717
        LEFT JOIN hr_md_emp_md0006 AS md06_cp ON md01.emp_id = md06_cp.emp_id
718

719
                                                 AND md06_cp.address_type = '04'
720

721
                                                 AND md06_cp.start_date <= @now
722

723
                                                 AND md06_cp.end_date >= @now
724

725
                                                 AND md06_cp.seq = ( SELECT
726

727
                                                              MAX(md6_st.seq)
728

729
                                                              FROM
730

731
                                                              hr_md_emp_md0006 md6_st
732

733
                                                              WHERE
734

735
                                                              md6_st.address_type = '04'
736

737
                                                              AND md6_st.emp_id = md06_cp.emp_id
738

739
                                                              )
740

741
        INNER JOIN hr_md_emp_md0015 AS md15 ON md01.emp_id = md15.emp_id
742

743
        LEFT JOIN #tbl_1 AS tbl_1 ON md01.emp_id = tbl_1.emp_id
744

745
        LEFT JOIN @tbl_2 AS tbl_2 ON md01.emp_id = tbl_2.emp_id
746

747
        LEFT JOIN #tbl_3 AS tbl_3 ON md01.emp_id = tbl_3.emp_id
748

749
       
750

751
WHERE   md02_last.company_id = @companycode
752

753
		AND md01.start_date <= @now
754

755
		AND md01.end_date >= @now
756

757
        AND ( md02_last.payroll_group = @pay_group
758

759
              OR @pay_group = ''
760

761
            )
762

763
        AND ( md02_last.employee_status = @emp_status
764

765
              OR @emp_status = ''
766

767
            )
768

769
        AND ( md02_last.employee_area = @emp_area
770

771
              OR @emp_area = ''
772

773
            )
774

775
        AND ( md02_last.employee_office = @emp_office
776

777
              OR @emp_office = ''
778

779
            )
780

781
        AND ( md02_last.employee_type = @emp_type
782

783
              OR @emp_type = ''
784

785
            )
786

787
ORDER BY md02_last.employee_office ,
788

789
        md01.emp_id
790

791

792

793
		DROP TABLE #tbl_3
794

795
		DROP TABLE #tbl_1
796

797
		DROP TABLE #tbl_md2_last
(3-3/3)