<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-199  評論-203  文章-11  trackbacks-0
    --今天一天爲了計算一個全勤獎,快把我給鬱悶死了,如下是我今天的一點成績,那位朋友如果有更好的建議歡迎--指教!謝謝...!
    SELECT 年月,部門編號,員工ID,員工卡號,姓名,事假天數,曠工天數,/*進廠日期,上班日期,離職日期,上班時間,離職時間,*/
      --根據離職人員離職日期分給相應全勤獎.
      CASE 離職時間 WHEN 0 THEN 全勤獎 WHEN 1 THEN 全勤獎-10 WHEN 2 THEN 全勤獎-20 ELSE 全勤獎*0 END 全勤獎
      FROM(
      --C
      SELECT 年月,部門編號,員工ID,員工卡號,姓名,事假天數,曠工天數,進廠日期,上班日期,離職日期,上班時間,離職時間,
        --曠工者全勤為0,新進員工3號以後進廠的全勤為0,離職人員如果是在本月倒數第三天之前的全勤為0.
        CASE WHEN 曠工天數> 0 OR 上班時間 >= 3 OR 離職時間 >=3 THEN 0
           WHEN 上班時間= 2 THEN --新進員工2號進廠的全勤為10
           CASE WHEN 事假天數 = 0    THEN 10
              WHEN 事假天數 = 0.5 THEN 5
              WHEN 事假天數 >= 1  THEN 0 END
           WHEN 上班時間=1 THEN --新進員工1號進廠的全勤為20
            CASE WHEN 事假天數 = 0    THEN 20
              WHEN 事假天數 = 0.5 THEN 15
              WHEN 事假天數 = 1.5 THEN 5
              WHEN 事假天數 >= 2  THEN 0 END
         WHEN 上班時間=0 THEN --老員工全勤為30
           CASE WHEN 事假天數 = 0    THEN 30
              WHEN 事假天數 = 0.5 THEN 25
              WHEN 事假天數 = 1    THEN 20
              WHEN 事假天數 = 1.5 THEN 15
              WHEN 事假天數 = 2    THEN 10
              WHEN 事假天數 = 2.5 THEN 5
              WHEN 事假天數 >= 3    THEN 0 END   
         END 全勤獎
      FROM(
       SELECT 年月,部門編號,員工ID,員工卡號,姓名,進廠日期,上班日期,離職日期,
      --如果進廠年月等于上班年月,表示此員工為新員工.
      CASE WHEN LEFT(進廠日期,6)=LEFT(上班日期,6) THEN CAST(RIGHT(上班日期,2)AS INT) ELSE 0 END 上班時間,
      --如果進廠年月等于上班年月,表示此本月即將離職
      CASE WHEN LEFT(離職日期,6)='200902' THEN
       CAST(RIGHT(CONVERT(VARCHAR(8),DATEADD(D,-1,DATEADD(M,1,'20090201')),112),2) AS INT)-
       CAST(RIGHT(離職日期,2)AS INT)
       ELSE 0 END  離職時間,
      ISNULL(SUM(CASE 假別 WHEN '事假' THEN 假別天數  END),0) 事假天數,
      ISNULL(SUM(CASE 假別 WHEN '曠工' THEN 假別天數 END),0) 曠工天數
       FROM(
        SELECT D.年月,D.部門編號,D.員工ID,D.員工卡號,D.姓名,D.假別,D.假別天數,E.進廠日期,E.上班日期,E.離職日期
         FROM(
         SELECT C.年月,A.部門編號,A.員工ID,A.員工卡號,A.姓名,
           CASE WHEN C.假別!=  '曠工' AND C.假別!='輪休' THEN '事假' ELSE C.假別 END 假別,SUM(C.天數) 假別天數--,進廠日期
          FROM SPG_TECH.每日刷卡 A 
          INNER JOIN ( --員工本月最後一天在那個部門上班算那個部門
             SELECT 員工ID,MAX(日期) AS 日期   FROM SPG_TECH.每日刷卡
              WHERE CONVERT(CHAR(6),日期,112) LIKE '200902'+'%' AND 上班!='' 
                      GROUP BY 員工ID
             )B
          ON A.員工ID=B.員工ID AND A.日期=B.日期
          INNER JOIN( --根據員工ID,統計底薪天數
             SELECT CONVERT(CHAR(6),日期,112) 年月,員工ID,員工卡號,姓名,
               CASE 假別 WHEN '' THEN 備注 ELSE 假別 END AS 假別,備注,
               CASE  WHEN 假別 ='' AND 備注 = '' THEN 0 ELSE COUNT(備注) END 備註,
               CASE WHEN 備注 != '曠工' AND 備注 != '' THEN COUNT(備注) * 0.5 ELSE
               CASE  WHEN 假別 ='' AND 備注 = '' THEN 0 ELSE COUNT(備注) END END 天數
              FROM SPG_TECH.每日刷卡
              WHERE  CONVERT(CHAR(6),日期,112) LIKE '200902'+'%' --AND 姓名='朱小女'
              GROUP BY CONVERT(CHAR(6),日期,112),員工ID,員工卡號,姓名,假別,備注
           )C
          ON A.員工ID = C.員工ID
         
          WHERE 部門編號 IN( SELECT 部門編號  FROM SPG.SPG_TECH.部門資料     --只針對針車部門,過濾其它部門
              WHERE 廠內外='內' AND 是否職干!='是' AND 單位區別='A'  AND 部門編號 LIKE '%' +'-S'+'%')
              AND 部門編號='BL3-S4'  
          GROUP BY C.年月,A.員工ID,A.姓名,A.員工卡號,A.部門編號,CASE WHEN C.假別!=  '曠工' AND C.假別!='輪休' THEN '事假' ELSE C.假別 END
       
         )D
         INNER JOIN(
          SELECT A.員工ID,A.員工卡號,A.姓名,CONVERT(CHAR(8),MIN(A.日期),112) 上班日期,
           CONVERT(CHAR(8),B.進廠日期,112) 進廠日期,CONVERT(CHAR(8),B.離職日期,112) 離職日期
           FROM SPG_TECH.每日刷卡 A
           INNER JOIN SPG_TECH.員工資料 B
           ON A.員工ID = B.員工ID
           WHERE CONVERT(CHAR(6),日期,112) LIKE  '200902'+'%' -- AND A.部門編號='BL2-S1'
           GROUP BY A.員工ID,A.員工卡號,A.姓名,B.進廠日期,B.離職日期
           )E
         ON D.員工ID = E.員工ID
      )F GROUP BY  年月,部門編號,員工ID,員工卡號,姓名,進廠日期,上班日期,離職日期
     )G
    )H ORDER BY 年月,部門編號,員工卡號
    posted on 2009-04-09 19:32 Werther 閱讀(906) 評論(0)  編輯  收藏 所屬分類: 15.SQL Server
    主站蜘蛛池模板: 亚洲国产精品久久网午夜| 丰满亚洲大尺度无码无码专线 | 免费国产黄网站在线观看可以下载 | www.亚洲色图.com| 亚洲乱码无码永久不卡在线| 黄页网站在线免费观看| 免费观看激色视频网站bd| 五月天网站亚洲小说| 老子影院午夜伦不卡亚洲| 免费看的成人yellow视频| 亚洲爆乳大丰满无码专区| 在线观看免费亚洲| 亚洲午夜免费视频| 8090在线观看免费观看| 久久亚洲色一区二区三区| 久久免费视频一区| 亚洲一区二区三区四区在线观看| 久久午夜羞羞影院免费观看| 亚洲欧洲精品一区二区三区| 和日本免费不卡在线v| 色窝窝亚洲AV网在线观看| 久久精品国产精品亚洲| 免费日本一区二区| 亚洲va在线va天堂成人| 亚洲AV网站在线观看| a级午夜毛片免费一区二区| 亚洲视频国产视频| 99视频免费观看| 亚洲人片在线观看天堂无码| 亚洲免费在线观看| 一级看片免费视频囗交| 国产免费直播在线观看视频| 亚洲精品午夜国产va久久| 2015日韩永久免费视频播放| 亚洲国产综合专区在线电影| 成人免费看黄20分钟| 亚欧国产一级在线免费| 久久久久久久亚洲精品| 亚洲成人免费在线观看| 无码 免费 国产在线观看91| 亚洲国产综合专区电影在线|