Запрос Microsoft Access с использованием альтернативы ROW_NUMBER для повторяющейся даты - PullRequest
1 голос
/ 29 марта 2019

Очевидно, что в MS Access есть куча вопросов о ROW_NUMBER, и обычный ответ таков: он не существует, а вместо этого использует COUNT (*) для создания чего-то подобного. К сожалению, это не дает мне нужных результатов.

Мои данные выглядят так:

employee_id -------start_time ------- start_date
000670 -----------------12:30 ------------ 2019/03/28
000670 -----------------11:22 ------------ 2019/03/30
000676 -----------------13:00 ------------ 2019/03/28
000676 -----------------11:30 ------------ 2019/03/29
000676 -----------------14:00 ------------ 2019/03/29
000676 -----------------11:20 ------------ 2019/03/30
000676 -----------------14:00 ------------ 2019/03/30
000676 -----------------11:00 ------------ 2019/03/31
000677 -----------------11:20 ------------ 2019/03/28
000677 -----------------12:20 ------------ 2019/03/29
000678 -----------------12:00 ------------ 2019/03/29

Используя COUNT(*) я получаю:

employee_id -------- start_date ------- seq
000670  ------------ 2019/03/28 ------- 1
000670  ------------ 2019/03/30 ------- 2
000676  ------------ 2019/03/28 ------- 1
000676  ------------ 2019/03/29 ------- 3
000676  ------------ 2019/03/29 ------- 3
000676  ------------ 2019/03/30 ------- 5
000676  ------------ 2019/03/30 ------- 5
000676  ------------ 2019/03/31 ------- 6
000677  ------------ 2019/03/28 ------- 1
000677  ------------ 2019/03/29 ------- 2
000678  ------------ 2019/03/29 ------- 1

Мой текущий запрос:

SELECT tbl.employee_id
     , tbl.start_date
     , ( SELECT COUNT(*)
           FROM tbl AS tbl2 
          WHERE tbl2.employee_id = tbl.employee_id 
            AND tbl2.start_date <= tbl.start_date ) AS seq
  FROM tbl
ORDER BY tbl.employee_id, tbl.start_date

Я пытаюсь найти уникальный счетчик employee_id и start_date, чтобы вывод моего запроса выглядел следующим образом:

employee_id -------- start_date ------- seq
000670  ------------ 2019/03/28 ------- 1
000670  ------------ 2019/03/30 ------- 2
000676  ------------ 2019/03/28 ------- 1
000676  ------------ 2019/03/29 ------- 2
000676  ------------ 2019/03/29 ------- 3
000676  ------------ 2019/03/30 ------- 4
000676  ------------ 2019/03/30 ------- 5
000676  ------------ 2019/03/31 ------- 6
000677  ------------ 2019/03/28 ------- 1
000677  ------------ 2019/03/29 ------- 2
000678  ------------ 2019/03/29 ------- 1

1 Ответ

1 голос
/ 29 марта 2019

Пожалуйста, попробуйте это.

ДЛЯ SQL

SELECT 
    tbl.employee_id, tbl.start_date,
    ROW_NUMBER() OVER(PARTITION BY employee_id ORDER BY employee_id)As Row_Num 
FROM tbl

ДЛЯ MS ДОСТУПА

SELECT tbl.employee_id
     , tbl.start_date
     , ( SELECT COUNT(*)
           FROM tbl AS tbl2 
          WHERE tbl2.employee_id = tbl.employee_id 
         AND  tbl2.start_date+tbl2.start_time < tbl.start_date+tbl.start_time
         )+1 AS seq
  FROM tbl
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...