使用子查询对房间价格求和时出错

Posted

技术标签:

【中文标题】使用子查询对房间价格求和时出错【英文标题】:Getting an error when summing price of room using a subquery 【发布时间】:2013-11-12 23:51:44 【问题描述】:

我正在尝试获取每家酒店在特定日期未预订客房的所有收入损失总和。

酒店 (hotelNo,hotelName,hotelAddress) 房间(hotelNo,roomNo,type,price) 来宾 (guestNo,guestName,guestAddress) Booking (hotelNo,guestNo,dateFrom,dateTo,roomNo)

这是我目前掌握的命令。我觉得这只是一个愚蠢的错误,而且我错过了一些简单的东西,但我就是不能指望它。

SELECT hotelNo, roomNo, (SUM)price AS "Lost Income"
FROM room r
WHERE roomNo NOT IN
(SELECT roomNo FROM booking b
WHERE to_date('20080706', 'yyyymmdd')
BETWEEN dateFrom AND dateTo
AND r.hotelno = b.hotelno)
ORDER BY hotelNo
GROUP BY hotelNo

【问题讨论】:

这不是加价的命令吗? @Szymon "ORA-00937: 不是单组群函数" 错误ORA?是 SQL Server 还是 Oracle? 【参考方案1】:

很明显,SUM 中的括号错误。另外,ORDER BY 应该在GROUP BY 之后,您需要以不同的方式转换日期

SELECT hotelNo, SUM(price) AS "Lost Income"
FROM room r
WHERE roomNo NOT IN
(SELECT roomNo FROM booking b
WHERE to_date('20080706', 'yyyymmdd')
BETWEEN dateFrom AND dateTo
AND r.hotelno = b.hotelno)
GROUP BY hotelNo
ORDER BY hotelNo

【讨论】:

当我运行它时,我收到错误“ORA-00933:SQL 命令未正确结束” 错误:“ORA-00902:无效数据类型” to_date 在 oracle 中有效 好吧,我还以为是 SQL Server。那是标签! 对不起,我用错了标签。该代码有效,但它并没有总结每家酒店所有房间的价格。它单独列出它们

以上是关于使用子查询对房间价格求和时出错的主要内容,如果未能解决你的问题,请参考以下文章

Knex 子查询对第二个表中的数据求和

在 ORACLE 中的子查询的列上求和

Case when 条件下来自另一个表的子查询

使用子查询时出错

尝试使用子查询计算时差时出错

如何在房间数据库dao中附加两个或多个子查询,而这些子查询存储在变量中