0

重複の可能性:
同じ部門で継続して勤務している雇用主の記録を統合しようとしている

特定の部門 に継続的に ( 45 日未満) 登録されている従業員の記録を統合しようとしています。

: 日付の差異 (と次の行の間emp_eff_to_dateemp_eff_from_date) が 45 日未満の場合、連続していると見なされます。

入力:

EMP_ID +      DEPT_ID +        EMP_EFF_FROM_DATE +      EMP_EFF_TO_DATE
-----------------------------------------------------------------------
10       10001       8/1/2008              10/31/2009
10       10001       11/1/2009              2/25/2010
10       10001       2/26/2010              5/1/2011
10       10001       8/1/2011              10/30/2011
10       10001       12/1/2011             10/31/2012
10       10003       7/1/2007              10/31/2007
10       10004       9/27/2004              6/8/2006
10       10004       6/30/2006              6/29/2007
10       10007       6/25/2006              6/20/2007
10       10007       8/25/2007              5/25/2008

希望する出力:

EMP_ID         DEPT_ID      EMP_EFF_FROM_DATE     EMP_EFF_TO_DATE
-------------------------------------------------------------------------
10          10001        2008-08-01             2011-05-01
10          10001        2011-08-01             2012-10-31
10          10003        2007-07-01             2007-10-31
10          10004        2004-09-27             2007-06-29
10          10007        2006-06-25             2007-06-20
10          10007        2007-08-25             2007-06-29
4

2 に答える 2

1

次の行がフィールド(ソート済み)に従っていると仮定すると、これemp_eff_from_dateを解決する方法は次のとおりです。

WITH DATA 
     AS (SELECT *, 
                Row_number() 
                  OVER ( 
                    PARTITION BY EMP_ID 
                    ORDER BY EMP_EFF_FROM_DATE)rn 
         FROM   TEST) 
SELECT t1.* 
FROM   DATA t1 
       INNER JOIN DATA t2 
               ON t1.RN = t2.RN - 1 
WHERE  Datediff(DAY, t1.EMP_EFF_TO_DATE, t2.EMP_EFF_FROM_DATE) <= 45 

完全な解決策はここ
にあり ますそれがあなたが望んでいたものと正確に一致しない場合は私に知らせてください。

于 2012-10-11T16:41:51.067 に答える