2015-06-22 3 views
0

У меня есть эта таблицаCorrect MS Access Query/Linq использовать

TBLAttendance

  • EmployeeCode Int (первичный ключ)
  • LOGTYPE Int (0 = я войти, лог 1 = ат из, 2 = лог вечера в, 3 = рт выйти)
  • TimeLog DateTime

Я хочу, чтобы произвести выход для каждого сотрудника в следующем формате

| 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, пожалуйста, помогите мне с правом запроса/подхода. Я смог сделать это с большим количеством кодов, но мне не нравится мое решение. Im хорошо с помощью LINQ ..

+0

Никто не заботится, если вы новичок или нет. Что ты уже испробовал. И для меня я не понимаю, о чем вы на самом деле спрашиваете. – ckruczek

+0

Не могли бы вы разместить какой-нибудь пример кода SQL, который вы используете? –

ответ

0

Попробуйте это,

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 
+0

Должен ли я использовать UNION вместо JOIN? –

0

Использование 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