Выберите запрос, разница в датах с несколькими записями в MS Access

Я работаю над базой данных, но у меня проблемы с чем-то (всего нуб). Я пока не могу опубликовать изображения в этом аккаунте, я разместил ссылки на свои изображения. В основном у меня есть столик для бронирования и столик для комнаты. Я хотел сделать операцию Date Diff для каждой комнаты, умножить ее на стоимость аренды и сгруппировать по номеру комнаты. Конечный результат, который я пытался получить, выглядит следующим образом, после того как я скрываю разницу в датах, потому что она мне понадобится только для расчета.

<!DOCTYPE html>
<html>
<body>

<table style="width:100%">
  <tr>
    <th>Room Number</th>
    <th>Total</th> 
 
  </tr>
  <tr>
    <td>1</td>
    <td>375</td>
    
  </tr>
  <tr>
    <td>2</td>
    <td>375</td>
    
  </tr>
  <tr>
    <td>3</td>
    <td>1680</td>
    
    
  </tr>
  <tr>
    <td>4</td>
    <td>700</td>
    
  </tr>
  <tr>
    <td>6</td>
    <td>60</td>
    
  </tr>
    <tr>
    <td>7</td>
    <td>540</td>
    
  </tr>
</table>

</body>
</html>

Я имею это как мой запрос SQL:

SELECT [Room Number], 
DATEDIFF("d", min(CheckInDate), max(CheckOutDate)) as dif
FROM Reservations
GROUP by [Room Number]

Я еще не делал расчеты для части денег, так как я не могу даже заставить Datediff работать для каждой комнаты.

2 ответа

Я думаю, что вам нужно рассчитать дату для каждой пары номер-клиент, а затем сгруппировать по room_id. Вы можете умножить цену послесловия или во время группы на. Я не знаю MS-доступа, но по логике sql это должно выглядеть так:

SELECT [Room Number], SUM(DATEDIFF("d", CheckInDate, CheckOutDate)) * price_per_night as dif 
FROM Reservations 
GROUP by [Room Number]

Давайте предположим, что ваши заказы хранятся в таблице с названием "Бронирование", а информация о номерах хранится в таблице "Номера". Если вы хотите включить все номера, независимо от того, были ли они забронированы или нет, используйте это:

SELECT Rooms.[Room Number], Sum((Reservations.CheckOutDate-Reservations.CheckInDate)*Rooms.Price) AS [Total per room]
FROM Reservations RIGHT JOIN Rooms ON Reservations.[Room Number] = Rooms.[Room Number]
GROUP BY Rooms.[Room Number];

Замените RIGHT JOIN на INNER JOIN, если вас интересуют только забронированные номера.

PS Ваш пример HTML неверен для комнаты 7, он должен быть 1080 (9*120).

Другие вопросы по тегам