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

时间:2017-12-17 19:46:12

标签: sql ms-access select-query

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



with pd.option_context("display.max_columns", 0):
    print(df)




我将此作为我的SQL查询:

<!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>

我还没有计算金钱部分,因为我甚至无法让Datediff为每个房间工作。

enter image description here

2 个答案:

答案 0 :(得分: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]

答案 1 :(得分:0)

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

for ( int i = 0; i < 5; i++)
{
   char filename[200]; // Make it large enough for your needs.
   std::sprintf(filename, "filelocation/name%d.txt", i+1); 
   name1->readName(filename);
}

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

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