2012-09-21 84 views
0

即時通訊使用MS SQL數據庫, 我的表看起來,添加動態列 - MS SQL

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 

對於 「中的」 僱員,類型和必須在特定日期同時添加「out」。對於下一個日期或下一個/同一個員工,類型必須以「IN」開頭。任何1可以幫助我寫入SQL查詢。

回答

0

您可以使用附加列

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

然後檢查其上模2實現這一點,如果餘數爲1,這是一個IN,如果是0,則是百分之百的,根據您的要求。

更具體地說

CASE WHEN 
    ROW_NUMBER() OVER (PARTITION BY Emp_ID, Date ORDER BY Time) % 2 = 1 
    THEN 'IN' 
    ELSE 'OUT' 
    END AS [Type] 
+0

太謝謝你了...真的是夢幻般的作品 – saranya