Rumah pangkalan data tutorial mysql 员工薪资历史-Union实现

员工薪资历史-Union实现

Jun 07, 2016 pm 03:59 PM
sejarah kakitangan capai gaji

( 2010-8-27 记录)员工薪资历史 -Union 实现: 1、 表结构 Salary ( id , empID , jbxz,yfxz,sfxz,jse , pid ) Perion(id,bm,year,month,sdate,edate) 表结构大体是这样的,其中 bm 是薪资日期编码如 2010-8 ,但是不一定也可以是 108 ,无规则可言。

( 2010-8-27 记录)员工薪资历史 -Union 实现:


\

1、 表结构

Salary ( id , empID , jbxz,yfxz,sfxz,jse , pid )

Perion(id,bm,year,month,sdate,edate…)

表结构大体是这样的,其中 bm 是薪资日期编码如 2010-8 ,但是不一定也可以是 108 ,无规则可言。 Year 是薪资年, month 是薪资月, sdate 和 edate 是开始和结束日期。

2. 本来打算用交叉表实现的,原本已经用交叉表实现了,不过最后未能用交叉表实现“ xxxx 小计”,只能实现的显示“小计”,最后改用union 方式实现。

3. 实现要点:

注意 group by 中的字段及顺序,注意 order by 中的字段及顺序

4 .代码如下:

/**
    统计员工的期间薪资
*/

IF EXISTS (select * from sysobjects where id = object_id('sp_count_salary') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
  DROP PROCEDURE sp_count_salary
GO

CREATE PROCEDURE sp_count_salary 
  @P_EMP_ID INT,         --员工id
  @P_SPLA_PER_ID INT,    --开始期间id
  @P_EPLA_PER_ID INT     --结束期间id
WITH encryption   
AS
BEGIN 
  BEGIN TRANSACTION T1

   DECLARE @V_S_YEAR INT            --开始期间年份
   DECLARE @V_S_MONTH INT           --开始期间月份
   DECLARE @V_E_YEAR INT            --结束期间年份
   DECLARE @V_E_MONTH INT           --结束期间月份
   
   select @V_S_YEAR=pla_per_year,@V_S_MONTH=pla_per_month from pla_period where pla_per_id=@P_SPLA_PER_ID
   select @V_E_YEAR=pla_per_year,@V_E_MONTH=pla_per_month from pla_period where pla_per_id=@P_EPLA_PER_ID 
   
   select (CAST(pla_per_year AS NVARCHAR(4)) + '-' + RIGHT('0' + CAST(pla_per_month AS NVARCHAR(2)), 2)) as '时间', sum(pay_res_btax) N'基本薪资',sum(pay_res_atax) N'应发薪资',sum(pay_res_result) N'实发薪资',sum(pay_res_tax) N'缴税额'
     from pla_period pp,pay_res pr
    where pp.pla_per_id = pr.pay_res_perid
      and pay_res_empid = @P_EMP_ID
      and (pla_per_year > @V_S_YEAR or (pla_per_year = @V_S_YEAR and pla_per_month >= @V_S_MONTH))
      and (pla_per_year < @V_E_YEAR or (pla_per_year = @V_E_YEAR and pla_per_month <= @V_E_MONTH))
 group by pla_per_year,pla_per_month
 union
 (
   select cast(pla_per_year as varchar(10))+N&#39;小计&#39; as &#39;时间&#39;, sum(pay_res_btax) N&#39;基本薪资&#39;,sum(pay_res_atax) N&#39;应发薪资&#39;,sum(pay_res_result) N&#39;实发薪资&#39;,sum(pay_res_tax) N&#39;缴税额&#39;
     from pla_period pp,pay_res pr
    where pp.pla_per_id = pr.pay_res_perid
      and pay_res_empid = @P_EMP_ID
      and (pla_per_year > @V_S_YEAR or (pla_per_year = @V_S_YEAR and pla_per_month >= @V_S_MONTH))
      and (pla_per_year < @V_E_YEAR or (pla_per_year = @V_E_YEAR and pla_per_month <= @V_E_MONTH))
 group by pla_per_year
 )
 union
 (
   select N&#39;合计&#39; as &#39;时间&#39;, sum(pay_res_btax) N&#39;基本薪资&#39;,sum(pay_res_atax) N&#39;应发薪资&#39;,sum(pay_res_result) N&#39;实发薪资&#39;,sum(pay_res_tax) N&#39;缴税额&#39;
     from pla_period pp,pay_res pr
    where pp.pla_per_id = pr.pay_res_perid
      and pay_res_empid = @P_EMP_ID
      and (pla_per_year > @V_S_YEAR or (pla_per_year = @V_S_YEAR and pla_per_month >= @V_S_MONTH))
      and (pla_per_year < @V_E_YEAR or (pla_per_year = @V_E_YEAR and pla_per_month <= @V_E_MONTH))
 )
 order by (CAST(pla_per_year AS NVARCHAR(4)) + &#39;-&#39; + RIGHT(&#39;0&#39; + CAST(pla_per_month AS NVARCHAR(2)), 2))

     
 IF @@ERROR > 0 
 BEGIN
   ROLLBACK TRANSACTION T1
 END 
 ELSE
 BEGIN
   COMMIT TRANSACTION T1
 END
END

GO

--EXEC sp_count_salary 4901,1131,1153
Salin selepas log masuk
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Wuthering WavesPengenalan kepada lokasi 5 rumah api dalam Sejarah Tenggelam Wuthering WavesPengenalan kepada lokasi 5 rumah api dalam Sejarah Tenggelam Mar 07, 2024 pm 03:58 PM

Adakah anda sedang mencari lima rumah api dalam pencarian History of the Sinking Tide? Panduan ini akan memberi anda penjelasan terperinci tentang tempat rumah api ini sedang menunggu untuk ditemui. Kami berharap ini akan membantu anda mencari rumah api yang anda perlukan dengan cepat dan menyelesaikan misi anda dengan jayanya! Sejarah tenggelamnya lokasi rumah api Mingtide Five diperkenalkan dan lokasi khusus disenaraikan: 1. Rumah api pertama: Sila pergi ke tanah tinggi batu tandus, terletak betul-betul di atas Beiluoye. 2. Rumah api kedua: Seterusnya, sila pergi ke Platform Zhongqu, yang boleh ditemui di sekitar titik teleportasi di sebelah timur laut. 3. Rumah api ketiga: Sila pergi ke tenggara Pergunungan Hukou dan cari di sepanjang Teluk Wuming. 4. Rumah api keempat: Sila pergi ke titik teleportasi di hujung tenggara Angry Birds Zee, berhampiran tebing. 5. Rumah api kelima: Sila pergi ke zon senyap pertama Hutan Tanpa Cahaya, dan anda akan menemuinya di pinggir tebing.

Bagaimana untuk melaksanakan log masuk WeChat dwi pada telefon mudah alih Huawei? Bagaimana untuk melaksanakan log masuk WeChat dwi pada telefon mudah alih Huawei? Mar 24, 2024 am 11:27 AM

Bagaimana untuk melaksanakan log masuk WeChat dwi pada telefon mudah alih Huawei? Dengan kebangkitan media sosial, WeChat telah menjadi salah satu alat komunikasi yang sangat diperlukan dalam kehidupan seharian orang ramai. Walau bagaimanapun, ramai orang mungkin menghadapi masalah: log masuk ke beberapa akaun WeChat pada masa yang sama pada telefon mudah alih yang sama. Bagi pengguna telefon mudah alih Huawei, tidak sukar untuk mencapai log masuk WeChat dwi Artikel ini akan memperkenalkan cara mencapai log masuk WeChat dwi pada telefon mudah alih Huawei. Pertama sekali, sistem EMUI yang disertakan dengan telefon mudah alih Huawei menyediakan fungsi yang sangat mudah - pembukaan dua aplikasi. Melalui fungsi pembukaan dwi aplikasi, pengguna boleh serentak

Bagaimana untuk melaksanakan fungsi klon WeChat pada telefon mudah alih Huawei Bagaimana untuk melaksanakan fungsi klon WeChat pada telefon mudah alih Huawei Mar 24, 2024 pm 06:03 PM

Bagaimana untuk melaksanakan fungsi klon WeChat pada telefon mudah alih Huawei Dengan populariti perisian sosial dan penekanan yang semakin meningkat terhadap privasi dan keselamatan orang ramai, fungsi klon WeChat telah beransur-ansur menjadi tumpuan perhatian. Fungsi klon WeChat boleh membantu pengguna log masuk ke berbilang akaun WeChat pada telefon mudah alih yang sama pada masa yang sama, menjadikannya lebih mudah untuk diurus dan digunakan. Tidak sukar untuk melaksanakan fungsi klon WeChat pada telefon mudah alih Huawei Anda hanya perlu mengikuti langkah berikut. Langkah 1: Pastikan versi sistem telefon mudah alih dan versi WeChat memenuhi keperluan Pertama, pastikan versi sistem telefon mudah alih Huawei anda telah dikemas kini kepada versi terkini, serta Apl WeChat.

Panduan Pengaturcaraan PHP: Kaedah untuk Melaksanakan Jujukan Fibonacci Panduan Pengaturcaraan PHP: Kaedah untuk Melaksanakan Jujukan Fibonacci Mar 20, 2024 pm 04:54 PM

Bahasa pengaturcaraan PHP ialah alat yang berkuasa untuk pembangunan web, yang mampu menyokong pelbagai logik dan algoritma pengaturcaraan yang berbeza. Antaranya, melaksanakan jujukan Fibonacci adalah masalah pengaturcaraan biasa dan klasik. Dalam artikel ini, kami akan memperkenalkan cara menggunakan bahasa pengaturcaraan PHP untuk melaksanakan jujukan Fibonacci, dan melampirkan contoh kod tertentu. Jujukan Fibonacci ialah jujukan matematik yang ditakrifkan seperti berikut: unsur pertama dan kedua bagi jujukan ialah 1, dan bermula dari unsur ketiga, nilai setiap unsur adalah sama dengan jumlah dua unsur sebelumnya. Beberapa elemen pertama urutan

Perkembangan sejarah dan peristiwa penting dalam bahasa Go Perkembangan sejarah dan peristiwa penting dalam bahasa Go Apr 04, 2024 am 08:12 AM

Bahasa Go telah dibangunkan oleh Google Ia pada asalnya diilhamkan pada tahun 2007 dan versi 1.0 dikeluarkan pada tahun 2012. Pencapaian pentingnya termasuk: 2012: Go 1.0 dikeluarkan, memperkenalkan concurrency, keselamatan memori dan pengumpulan sampah. 2020: Go2 dikeluarkan, memperkenalkan modulariti, penambahbaikan coroutine dan sokongan untuk generik dan pengendalian ralat. 2022: Go 1.19 dikeluarkan, menyediakan pengoptimuman prestasi dan sokongan untuk jenis dan fungsi generik.

Kuasai cara Golang mendayakan kemungkinan pembangunan permainan Kuasai cara Golang mendayakan kemungkinan pembangunan permainan Mar 16, 2024 pm 12:57 PM

Dalam bidang pembangunan perisian hari ini, Golang (bahasa Go), sebagai bahasa pengaturcaraan yang cekap, ringkas dan sangat bersesuaian, semakin digemari oleh pembangun. Perpustakaan standardnya yang kaya dan ciri-ciri konkurensi yang cekap menjadikannya pilihan berprofil tinggi dalam bidang pembangunan permainan. Artikel ini akan meneroka cara menggunakan Golang untuk pembangunan permainan dan menunjukkan kemungkinan besarnya melalui contoh kod tertentu. 1. Kelebihan Golang dalam pembangunan permainan Sebagai bahasa yang ditaip secara statik, Golang digunakan dalam membina sistem permainan berskala besar.

Panduan Pelaksanaan Keperluan Permainan PHP Panduan Pelaksanaan Keperluan Permainan PHP Mar 11, 2024 am 08:45 AM

Panduan Pelaksanaan Keperluan Permainan PHP Dengan populariti dan perkembangan Internet, pasaran permainan web menjadi semakin popular. Ramai pembangun berharap untuk menggunakan bahasa PHP untuk membangunkan permainan web mereka sendiri, dan melaksanakan keperluan permainan adalah langkah utama. Artikel ini akan memperkenalkan cara menggunakan bahasa PHP untuk melaksanakan keperluan permainan biasa dan menyediakan contoh kod khusus. 1. Cipta watak permainan Dalam permainan web, watak permainan adalah elemen yang sangat penting. Kita perlu mentakrifkan atribut watak permainan, seperti nama, tahap, nilai pengalaman, dll., dan menyediakan kaedah untuk mengendalikannya

Bagaimana untuk melaksanakan operasi pembahagian yang tepat di Golang Bagaimana untuk melaksanakan operasi pembahagian yang tepat di Golang Feb 20, 2024 pm 10:51 PM

Melaksanakan operasi pembahagian yang tepat di Golang adalah keperluan biasa, terutamanya dalam senario yang melibatkan pengiraan kewangan atau senario lain yang memerlukan pengiraan ketepatan tinggi. Operator bahagian terbina dalam Golang "/" dikira untuk nombor titik terapung, dan kadangkala terdapat masalah kehilangan ketepatan. Untuk menyelesaikan masalah ini, kami boleh menggunakan perpustakaan pihak ketiga atau fungsi tersuai untuk melaksanakan operasi pembahagian yang tepat. Pendekatan biasa ialah menggunakan jenis Tikus daripada pakej matematik/besar, yang menyediakan perwakilan pecahan dan boleh digunakan untuk melaksanakan operasi pembahagian yang tepat.

See all articles