Access SQL: вычисление процентного изменения между двумя строками - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь рассчитать процентное изменение между двумя датами в Access. Пользователь вводит дату начала, дату окончания и желаемое процентное изменение. Если результат соответствует критериям, он должен вернуть имя. Обратите внимание, что это формат дд / мм / гг.

У меня есть таблица:

Name   | Payment | DateTime
John   | 53.00   | 06/01/18
Mike   | 23.16   | 12/07/18
Steve  | 31.28   | 21/03/18
John   | 58.30   | 22/04/18

Например, если пользователь вводит дату начала 01/01/18, дату окончания 23/04/18 и желаемое процентное изменение на 10 процентов, он должен вернуть имя Джон.

В настоящее время у меня есть запрос:

SELECT Name

FROM UserPayments

WHERE DateTime >= '01/01/18' AND DateTime <= '23/04/18';

Я хотел бы рассчитать общее процентное изменение для двух записей. Это должна быть дата записи сразу после первой даты и дата непосредственно перед второй датой.

Я полностью застрял на том, как сделать это в Access (SQL). Я думаю, что мне нужно использовать соединение, но я не делал этого раньше.

1 Ответ

0 голосов
/ 30 августа 2018

Должна быть таблица Users с первичным ключом, например, UserID, и вместо таблицы Name пользователя следует использовать UserID в таблице UserPayments.

Хотя было бы неплохо использовать такие функции, как First и Last, MS Access не позволит использовать ORDER BY для сортировки деталей в группе, определенной GROUP BY. Поэтому вам нужно будет использовать подзапросы, чтобы получить два значения для расчета процента. Если у вас есть таблица Users, как упомянуто выше, и значение DateTime можно считать уникальным для пользователя , это может выглядеть следующим образом:

SELECT Users.Name, 
 (SELECT TOP 1 Payment FROM UserPayments 
  WHERE UserID = Users.UserID AND DateTime Between #01/01/2018# And #04/23/2018# 
  ORDER BY DateTime DESC)
  /
 (SELECT TOP 1 Payment FROM UserPayments 
  WHERE UserID = Users.UserID AND DateTime Between #01/01/2018# And #04/23/2018#
  ORDER BY DateTime ASC)
  -1 AS PercentChange
FROM Users;

Помните об ошибках округления и отформатируйте результат в процентах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...