一個說起來挺簡單但是越快越頭疼的一個專案,求懂的大神教一下,可能字數有些多。但是還是希望有大大求教一下!
求一個部門首先我要用總表里也就是hrs110ma里把部門人數提取出來,通過部門對應上級部門表也就是hrs009m3。通過表關聯外加一些部門所屬條件從而獲得部門具體人數和資訊,也就是下列陳述句
PS:hrs110ma人員資訊總表
hrs009m3部門對應上級部門表
hrs390t0員工月度考勤總檔(查詢2個假別,salaryid為3032上月存休和3033上月特休在一張表內同個欄位里部分要相加)
hrs351t0加班表(內含TRUM,也就是加班時數)
hrs321t0請假表(同上,內含TRUM欄位,也就是請假時數)
大概的意思就是,某部門每個人hrs390t0的上月結存時數(salaryid欄位下為3032和3033的欄位的QTY的值,相加所得的新的QTY)-hrs351t0的加班時數(TRUM欄位)+hrs321t0的請假時數(TRUM欄位)=本月結存。成為新的QTY欄位即可。最后查詢結果只要顯示IDNO,EMPLNM,EMPLNO,DEPTID,DEPTNM,QTY,YYYYMM(201612),FACTNO,trnsid
select *
from pec.hrs110ma
inner join pec.hrs009m3 on pec.hrs110ma.DEPTID = pec.hrs009m3.DEPTID--幾個表中的DEPTID部門ID是一樣的,還有IDNO身份證號,EMPLNM員工姓名,EMPLNO員工編號,DEPTNM部門名稱
where SUP_DEPTID = '00004199'--SUP_DEPTID是上級部門代號連接HRS009M3
and pec.hrs110ma.factno = '3300'--factno是廠別
and trnsid = '1';--trnsid代表是否在職
select IDNO, EMPLNM, DEPTNM, EMPLNO, DEPTNO, DEPTID
from pec.hrs110ma
where stop_date is null
and trnsid = 1
and deptid in (select deptid
from pec.hrs009m3
where SUP_DEPTNO = '01040000'
and factno = '3300'
and stop_date is null)--這段陳述句和上一段效果是一樣的,stop_date is null和trnsid =1也是一樣的道理。
之后我就懵逼了。子關聯沒有用,不會把人員導到hrs390t0,下面這個陳述句是我寫的,但是感覺很不對。。。因為不會把上面的資訊導進去還有就是3033和3032沒有相加。這段應該是錯的,我就發下希望不要誤導各位大神。
select (pec.hrs390t0.QTY - pec.hrs321t0.TNUM + pec.hrs351t0.TNUM) as TNUM
from PEC.HRS390T0, PEC.HRS321T0, PEC.HRS351T0
where PEC.HRS390T0.QTY = PEC.HRS321T0.TNUM
and PEC.HRS351T0.TNUM = PEC.HRS321T0.TNUM
and pec.hrs390T0.SALARYID='3032'
字有些多了,還是希望有大神幫幫忙,有強迫癥又不是很會,特來請教。謝謝各位了。
uj5u.com熱心網友回復:
有人嗎?大神們uj5u.com熱心網友回復:
IDNO,EMPLNM,EMPLNO,DEPTID,DEPTNM,QTY,YYYYMM(201612),FACTNO,trnsid這些個欄位原來都是屬于哪個表的,請說明。
uj5u.com熱心網友回復:
with
t1 as
--以下是員工資訊統計表
(select a.IDNO, a.EMPLNM, a.DEPTNM, a.EMPLNO, a.DEPTNO, a.DEPTID
from pec.hrs110ma a
inner join pec.hrs009m3 b
on a.DEPTID = b.DEPTID
where b.SUP_DEPTID = '00004199'
and b.factno = '3300'
and a.trnsid = '1'
and b.stop_date is null)
t2 as
--下面這個是員工的上月結存時數統計表
(select /*+ordered*/
a.IDNO, (a.QTY - b.TNUM + c.TNUM) as TNUM
from (select t.IDNO, sum(t.QTY) as QTY
from PEC.HRS390T0 t
where t.SALARYID in ('3032', '3033')
group by t.IDNO) a, PEC.HRS321T0 b, PEC.HRS351T0 c
where a.IDNO = b.IDNO
and b.IDNO = c.IDNO)
select t1.*, t2.TNUM from t1, t2 where t1.IDNO = t2.IDNO
我猜你是這種情況吧,至于YYYYMM(201612),FACTNO,trnsid 這個3個欄位,猜不出從哪個表來了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/107665.html
標籤:基礎和管理
下一篇:同一表中兩列資料不能相同
