【问题标题】:Select query, difference in dates with multiple record on MS Access选择查询,MS Access 上多条记录的日期差异
【发布时间】:2017-12-17 19:46:12
【问题描述】:

我正在处理数据库,但遇到了一些问题(完全是菜鸟)。我还不能在这个帐户上发布图片,我已经发布了指向我的图片的链接。基本上,我有一张预订桌和一张客房桌。我想为每个房间做一个 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 为每个房间工作。

【问题讨论】:

  • 请阅读this meta question,了解有关 Stack Overflow 问题的共享表。虽然 HTML 表格比 imo 截图要好,但它们仍然占用过多的空间。

标签: sql ms-access select-query


【解决方案1】:

我认为您需要计算每个房间-客户对的 datediff,然后按 room_id 分组。您可以多价后记或分组期间。我不知道 ms-access 但按 sql 逻辑它应该看起来像:

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

【讨论】:

  • 是的,你的答案非常接近,我得继续努力。
【解决方案2】:

假设您的预订存储在名为 Reservations 的表中,而房间信息存储在名为 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];

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

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

【讨论】:

    猜你喜欢
    • 2014-02-24
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多