0

私はMsSQLデータベースを使用しています、私のテーブルは見えます、

SrNo  Emp_ID   Date          Time 
------------------------------------
  1    25     03-Sep-12    9:35:35 AM  
  2    25     03-Sep-12   10:31:32 AM 
  3    25     03-Sep-12   10:34:13 AM 
  4    25     03-Sep-12   11:05:08 AM 
  5    25     03-Sep-12   11:08:39 AM 
  6    25     04-Sep-12   09.05.40 AM     

期待される出力は

 SrNo  Emp_ID   Date          Time     Type 
---------------------------------------------
  1    25     03-Sep-12    9:35:35 AM  IN
  2    25     03-Sep-12   10:31:32 AM  OUT
  3    25     03-Sep-12   10:34:13 AM  IN
  4    25     03-Sep-12   11:05:08 AM  OUT
  5    25     03-Sep-12   11:08:39 AM  IN
  6    25     04-Sep-12   09.05.40 AM  IN

従業員の場合、特定の日付に対して「in」と「out」を同時に追加する必要があります。次の日付または次の/同じ従業員の場合、入力は「IN」で始まる必要があります。どれでも1つはSQLクエリを書くのに役立ちますか?

4

1 に答える 1

0

これは、追加の列を使用して実現できます

ROW_NUMBER() OVER (PARTITION BY Emp_ID, Date ORDER BY Time) AS RN

次に、要件に基づいて、モジュラス2をチェックし、余りが1の場合はIN、0の場合はOUTです。

すなわち

CASE WHEN 
  ROW_NUMBER() OVER (PARTITION BY Emp_ID, Date ORDER BY Time) % 2 = 1 
     THEN 'IN' 
     ELSE 'OUT' 
  END AS [Type]
于 2012-12-03T11:02:53.870 に答える