簡體   English   中英

正確使用MS Access查詢/ Linq

[英]Correct MS Access Query / Linq to use

我有這張桌子

TBLA的出勤率

  • EmployeeCode int(主鍵)
  • LogType int(0 =上午登錄,1 =上午注銷,2 =下午登錄,3 =下午注銷)
  • TimeLog日期時間

我想以以下格式為每個員工生成輸出

| EmployeeCode | AM_LOG_IN | AM_LOG_OUT | PM_LOG_IN | PM_LOG_OUT |
|--------------|-----------|------------|-----------|------------|
| 12345        | 09:30:01  | 12:02:04   | 13:15:06  | 18:05:02   |

我正在使用MSAccess,請幫助我進行正確的查詢/處理。 我能夠用很多代碼來做到這一點,但是我不喜歡我的解決方案。 我可以使用LINQ。

嘗試這個,

SELECT A.EmployeeCode, A.AM_LOG_IN, A.AM_LOG_OUT, A.PM_LOG_IN, A.PM_LOG_OUT FROM(
SELECT EmployeeCode, TimeLog AS AM_LOG_IN  FROM TBLAttendance
WHERE LogType = 0

UNION

SELECT EmployeeCode, TimeLog AS AM_LOG_OUT  FROM TBLAttendance
WHERE LogType = 1

UNION

SELECT EmployeeCode, TimeLog AS PM_LOG_IN  FROM TBLAttendance
WHERE LogType = 2

UNION

SELECT EmployeeCode, TimeLog AS PM_LOG_OUT  FROM TBLAttendance
WHERE LogType = 3
) A
GROUP BY A.EmployeeCode

以Madhawas為起點:

SELECT 
    A.EmployeeCode, 
    Sum(A.AI) AS AM_LOG_IN, 
    Sum(A.AO) AS AM_LOG_OUT, 
    Sum(A.PI) AS PM_LOG_IN, 
    Sum(A.PO) AS PM_LOG_OUT 
FROM
    (SELECT 
        EmployeeCode, 
        TimeLog AS AI, Null AS AO, Null AS PI, Null AS PO  
    FROM TBLAttendance
    WHERE LogType = 0

    UNION ALL

    SELECT 
        EmployeeCode, 
        Null AS AI, TimeLog AS AO, Null AS PI, Null AS PO  
    FROM TBLAttendance
    WHERE LogType = 1

    UNION ALL

    SELECT 
        EmployeeCode, 
        Null AS AI, Null AS AO, TimeLog AS PI, Null AS PO  
    FROM TBLAttendance
    WHERE LogType = 2

    UNION ALL

    SELECT 
        EmployeeCode, 
        Null AS AI, Null AS AO, Null AS PI, TimeLog AS PO  
    FROM TBLAttendance
    WHERE LogType = 3
    ) AS A
GROUP BY A.EmployeeCode

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM