在MS Access上选择查询,日期与多条记录的差异

问题描述 投票:0回答:2

我正在研究数据库,但遇到问题(总菜鸟)。我无法在此帐户上发布图片,我已发布指向我图片的链接。基本上,我有一张预订桌和一张房间桌。我想对每个房间进行日期差异操作,并将其乘以租金价格,并按房间号码分组。在我隐藏日期差异之后,我试图做出的最终结果是这样的,因为我只需要它进行计算。

<!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为每个房间工作。

enter image description here

sql ms-access select-query
2个回答
0
投票

我认为您需要为每个房间 - 客户对计算日期,然后按room_id进行分组。您可以在后面或在组中使用多个价格。我不知道ms-access,但是通过sql逻辑它应该看起来像:

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

0
投票

假设您的预订存储在名为预订的表格中,房间信息存储在名为Rooms的表格中。如果您想要包括所有房间,无论是否已预订,请使用以下方法:

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];

如果您只对预订的房间感兴趣,请通过INNER JOIN替换RIGHT JOIN。

PS你的HTML示例对于7号房间来说是错误的,它应该是1080(9 * 120)。

© www.soinside.com 2019 - 2024. All rights reserved.