各位前輩:
我想要用鼎新的自訂報表寫一之薪資清冊的報表,報表內容必須包括所有的薪資項目,不管當月該薪資項目是否有金額。不知是否有前輩可以教我用[本薪]=sum(case when ItemId=52 then ItemValue else 0 end)這類的寫法,分別放在Select及Join這兩個欄位中?
備註說明:鼎新的自定義報表編輯時共會出現Select、From、Join、Where、Group by、Order by 六個欄位。
因為我不是資訊科系,所以要麻煩前輩給予指導或是範例,謝謝您。
SELECT : 要顯示的欄位,如 TD001,TD002,TD003 =>要順序
FROM : 在這裡應該解釋為 主TABLE
JOIN :被參照的 TABLE , 要用 "ON " 這個關鍵字來跟主TABLE連接.
WHERE : 條件子句.
GROUP BY :加總條件
ORDER BY :排序條件
要用自定報表來做薪資清冊會有點難度.
因為鼎新的薪資系統中加減項目的名稱是放在其他TABLE
例:PALTD 是發薪記錄檔. TD001 :工號 , TD011 :加項一 , TD012 :加項二 , TD013 :加項三
TD021 : 減項一 , TD022:減項二, TD023 : 減項三.
但是在薪資條上,一定看不到"加項一"這個項目. 而是"職務加給" .
加項一對照成職務加給.這個是放在其他TABLE .
自定報表只可以處理到:表頭名稱只能顯示為"加項一" ,無法 顯示為"職務加給".
要顯示為"職務加給":只能透過程式處理.
我用的是HRM系統,去上完鼎新的課後,我可以用他的自定義報表程式做出無需計算的報表(例如服務證明),或是修改鼎新提供的報表格式(例如薪資單樣式),但我要做的薪資清冊要的資料都拉出來,就不能套入報表設計器裡,除非每個薪資項目都寫出來,就不能用鼎新教的方式。
客製沒多少錢,但公司不會會花錢,我本身是人資,對這個有興趣,所以想要多學點。
看過各位前輩的答覆,是否能推薦我要看那一本書,才能自己寫呢?
我用的是HRM系統,去上完鼎新的課後,我可以用他的自定義報表程式做出無需計算的報表(例如服務證明),或是修改鼎新提供的報表格式(例如薪資單樣式),但我要做的薪資清冊要的資料都拉出來,就不能套入報表設計器裡,除非每個薪資項目都寫出來,就不能用鼎新教的方式。
客製沒多少錢,但公司不會會花錢,我本身是人資,對這個有興趣,所以想要多學點。
看過各位前輩的答覆,是否能推薦我要看那一本書,才能自己寫呢?
我用的是HRM系統,去上完鼎新的課後,我可以用他的自定義報表程式做出無需計算的報表(例如服務證明),或是修改鼎新提供的報表格式(例如薪資單樣式),但我要做的薪資清冊要的資料都拉出來,就不能套入報表設計器裡,除非每個薪資項目都寫出來,就不能用鼎新教的方式。
客製沒多少錢,但公司不會會花錢,我本身是人資,對這個有興趣,所以想要多學點。
看過各位前輩的答覆,是否能推薦我要看那一本書,才能自己寫呢?
我用的是HRM系統,去上完鼎新的課後,我可以用他的自定義報表程式做出無需計算的報表(例如服務證明),或是修改鼎新提供的報表格式(例如薪資單樣式),但我要做的薪資清冊要的資料都拉出來,就不能套入報表設計器裡,除非每個薪資項目都寫出來,就不能用鼎新教的方式。
客製沒多少錢,但公司不會會花錢,我本身是人資,對這個有興趣,所以想要多學點。
看過各位前輩的答覆,是否能推薦我要看那一本書,才能自己寫呢?
頂新的自訂報表真的不好用, 能接受其他報表服務的話, SSRS都能做的比它好太多.
很多人都這麼說,但我唯一會用的就只有鼎新這套
要鼎新系統用的好,首先要先了解:"系統架構"(因為系統架構就會決定這套系統可以做到什麼) .系統架構基礎就是 TABLE SCHEMA . 鼎新系統的 TABLE SCHEMA 是採用無義意的編號方式. 所以一定要配合他們的HELP 來看.才會了解每個欄位方的是什麼資料.
當你了解架構後.(當然也可以一邊學一邊了解) 你在做自定報表時,就會比較順手.
因為你是人資不是MIS. 所以進階的部份就是先將 SELECT 語法學會.
SELECT 語法可以從 Query Analyzer 中的說明-> Transact-SQL 語法 中學習.
SELECT 語法可以寫的很複雜 .建議先從簡單的方式學起:
以上都了解之後, 再練一些更複雜的,如子 SELECT / CASE WHEN THEN ELSE END / SELECT INTO ... 等
最後預祝你:學習順利.
可以查一下 HELP 中 二.系統簡介中的 2-003 資料欄位一覧表.這就是鼎新系統的 TABLE SCHEMA 說明.
Hi 大頭前輩:
不知道是我的權限問題,還是HRM本來就沒有,所以我看不到你說的。
你可以推薦我看哪一本書自學嗎?
要連上 HRM的主機上才會有: Query Analyzer 或是請 貴公司的 MIS 幫你的電腦安裝 MS-SQL 的管理工具. (要與 HRM SERVER 的MS-SQL 同版本)
請問MS-SQL是鼎新系統的嗎?如果我用了,是否會影響到其他數據?請問您可以推薦我看哪一本MS-SQL自學嗎?
MS-SQL 不是鼎新系統.是鼎新系統存放資料的地方.
會不會影響到其他數據: 如果是用 Query Analyzer , 只要不用到 以下的關鍵字應該是不會影響.
關鍵字: UPDATE / INSERT / DELETE / DROP / INTO (SELECT INTO) / REVOKE
如果是用 Enterprise Manager : 這個"會"影響資料.
已經很久沒有買書了.而且MS-SQL 我也是自學.再加上你現在要學的只有SELECT 語法.我人認為是可以不用買書. 如果你想買, 就自己到天瓏書局(如果你是在台北的話)去看:那本MS-SQL 的書你看得懂.(買書要買自己看得懂的)
買書之前要先確認使用的MS-SQL版本.
MS-SQL 是微軟的資料庫. 鼎新HRM系統中的資料是存放在MS-SQL 上.
一般系統都是分為:程式 及 資料庫 .
程式是鼎新開發的. 所有的商業邏輯就在這裡面. HRM 是鼎新2010年左右才獨立出來賣的系統.(以前都是跟ERP一起賣,但是因為薪資保密的關係,一直都賣不好,所以才獨立出來),所以我不確定用那種程式語言開發的.
資料庫: 應該是用 MS-SQL . 資料庫就是放操作者在系統中輸入或運算結果的資料.
如何連到HRM 的主機或 安裝 Query Analyzer : 也可以找鼎新的客服幫忙.
好的,非常謝謝您呦!
case when ... then ... else ... end 是來處理欄位值的!
而欄位可以放在 Select、From、Join、Where、Group by、Order by 所有地方
所以您可以這樣寫
select (case when TC001='22' then TC003 else TD002 end) AS A
FROM COPTC INNER JOIN COPTD ON
(case when TC001='22' then TC003 else TD002 end) =(case when TC001='22' then TC003 else TD002 end)
Where (case when TC001='22' then TC003 else TD002 end) =(case when TC001='22' then TC003 else TD002 end)
Group by (case when TC001='22' then TC003 else TD002 end)
Order by (case when TC001='22' then TC003 else TD002 end)
以上希望能對您有所幫助!
參考看看...
select TI001 as '工號',
MV002 as '姓名',
MV036 as '帳號',
TI002 as '年月',
TI024 as '底(本)薪',
TI026 as '免稅加班費',
TI028 as '課稅加班費',
TI016 as '出勤天數',
(TI008+TI010+TI012) as '平加時數',
TI014 as '假加時數',
TI052 as '借支金額',
TI030 as '全勤獎金',
TI033 as '健保費',
TI034 as '勞保費',
TI032 as '請假扣款',
TI036 as '扣所得稅',
TI043 as '課稅所得',
/* 應發金額 = 本薪 + 免稅加班費 + 課稅加班費 + 全勤獎金 + iif(加扣別(PAL.TJ005)='1',Sum(金額),SUM(0)) /
(TI024+TI026+TI028+TI030)+isnull((select sum(TJ007) from PALTJ where TJ001=TI001 and TJ002=TI002 and TJ005=1),0) as '應發金額',
/ 扣款金額 = 請假扣款 + 扣所得稅 + 勞保費 + 健保費 + 員工本月提繳金額 + iif(加扣別(PAL.TJ005)='-1',Sum(金額),SUM(0)) */
(TI032+TI036+TI033+TI034+TI053)+isnull((select sum(TJ007) from PALTJ where TJ001=TI001 and TJ002=TI002 and TJ005=-1),0) as '扣款金額',
TI041 as '實付金額',
TI053 as '員工本月提繳金額',
TI054 as '公司本月提繳金額',
TI055 as '員工累計提繳金額',
TI056 as '公司累計提繳金額',
TM021 as '資方負擔勞保費',
TM022 as '資方負擔健保費',
(case MV034 when 'C' then TI041 else 0 end) as '現金支付額',
(case MV034 when 'B' then TI041 else 0 end) as '銀行支付額',
(case MV034 when 'P' then TI041 else 0 end) as '郵局支付額',
isnull((select sum(TJ007) from PALTJ where TJ001=TI001 and TJ002=TI002 and TJ003='0004'),0) as '主管加給',
isnull((select sum(TJ007) from PALTJ where TJ001=TI001 and TJ002=TI002 and TJ003='0005'),0) as '專業加給',
isnull((select sum(TJ007) from PALTJ where TJ001=TI001 and TJ002=TI002 and TJ003='0006'),0) as '環境津貼',
isnull((select sum(TJ007) from PALTJ where TJ001=TI001 and TJ002=TI002 and TJ003='M001'),0) as '稅前扣款-',
isnull((select sum(TJ007) from PALTJ where TJ001=TI001 and TJ002=TI002 and TJ003='M002'),0) as '稅後扣款-',
isnull((select sum(TJ007) from PALTJ where TJ001=TI001 and TJ002=TI002 and TJ003='M003'),0) as '扣電話費-',
isnull((select sum(TJ007) from PALTJ where TJ001=TI001 and TJ002=TI002 and TJ003='M004'),0) as '借支還款-',
isnull((select sum(TJ007) from PALTJ where TJ001=TI001 and TJ002=TI002 and TJ003='M005'),0) as '匯款扣款-',
isnull((select sum(TJ007) from PALTJ where TJ001=TI001 and TJ002=TI002 and TJ003='M006'),0) as '強制扣薪-',
isnull((select sum(TJ007) from PALTJ where TJ001=TI001 and TJ002=TI002 and TJ003='M007'),0) as '扣保費-',
isnull((select sum(TJ007) from PALTJ where TJ001=TI001 and TJ002=TI002 and TJ003='P001'),0) as '稅前加發+',
isnull((select sum(TJ007) from PALTJ where TJ001=TI001 and TJ002=TI002 and TJ003='P002'),0) as '稅後加發+',
isnull((select sum(TJ007) from PALTJ where TJ001=TI001 and TJ002=TI002 and TJ003='P003'),0) as '保費歸還+',
isnull((select sum(TJ007) from PALTJ where TJ001=TI001 and TJ002=TI002 and TJ003='P004'),0) as '生產獎金+',
TI016 as '出勤天數',
TI037 as '獨立發放金額',
TI038 as '獨立課稅所得',
TI039 as '獨立扣所得稅'
from PALTI with (nolock)
left join CMSMV with (nolock) on MV001=TI001
left join PALTM with (nolock) on TM001=TI001 and TM002=TI002
where TI002='201606'
order by TI001, TI002
/--- [END] ---/
建議你跟公司申請時間及經費去上進階的課程
上課倒是其次
記得在上課時拿你的問題來讓老師當範例教學
這樣至少可以問到你要的報表