oracle数据错误提取,提取rownum导致查询结果有误

这篇博客探讨了一个SQL查询在处理酒店数据时遇到的问题及解决方案。通过变通的方法解决了查询错误,但具体错误原因仍未知。查询涉及了多个表的连接操作,包括酒店信息、状态类型、等级类型、推荐级别等,并根据价格、评价、预订状态等多个条件进行了筛选和排序。重点关注了价格在1000到1200之间的五星级酒店,并考虑了房间状态和预订情况。
摘要由CSDN通过智能技术生成

问题有了些许转机,变通的办法解决了这个问题,但是这个语句为何出错仍然不得而知,路过的大侠们给看看吧。

WITH t0 AS(

SELECT h.hotel_id,

h.hotel_name,

h.address,

h.hotel_grade_type_id,

hg.hotel_grade_pic,

hl.reco_image,

f_ho_getcommtodonum(h.hotel_id,

to_date('2008-6-19', 'yyyy-mm-dd')) AS commtodonum,

h.reco_level_id,

h.hotel_status_type_id,

h.hotel_reserv_status_id,

f_gethouseconfig(h.hotel_id,

to_date('2008-6-19', 'yyyy-mm-dd')) AS houseconfig,

f_getbaseprice(h.hotel_id, to_date('2008-6-19', 'yyyy-mm-dd')) AS baseprice,

f_gethotelmark(h.hotel_id, -1) AS hotelmark,

nvl(hrs.num_buy, 0) num_buy,

nvl(hrs.num_pre_occupt, 0) num_pre_occupt,

nvl(hrs.room_status, 2) AS room_status,

nvl(hrs.num_occupt, 0) num_occupt

FROM t_hp_hotel h

LEFT JOIN t_hd_hotel_status_type hst ON hst.hotel_status_type_id =

h.hotel_status_type_id

LEFT JOIN t_hd_hotel_grade_type hg ON hg.hotel_grade_type_id =

h.hotel_grade_type_id

LEFT JOIN t_hd_reco_level hl ON hl.reco_level_id = h.reco_level_id

LEFT JOIN t_sd_city city ON h.city_id = city.city_id

LEFT JOIN t_hp_room_status_stat hrs ON hrs.hotel_id = h.hotel_id

AND hrs.room_date =

to_date('2008-6-19',

'yyyy-mm-dd')

WHERE f_getbaseprice(h.hotel_id, to_date('2008-6-19', 'yyyy-mm-dd')) BETWEEN 1000 AND 1200

AND hg.hotel_grade_num = 5

AND (h.county_id = 110000 AND

(city.city_type IS NULL OR city.city_type = 1))

ORDER BY commtodonum,

CASE

WHEN hrs.num_buy > 0 THEN

1

ELSE

0

END DESC,

CASE

WHEN hrs.num_occupt > 0 THEN

1

ELSE

0

END DESC,

CASE

WHEN hrs.num_pre_occupt > 0 THEN

1

ELSE

0

END DESC,

hl.reco_sort,

hst.sort DESC,

h.person_reservs DESC,

h.person_querys DESC)

SELECT t0.*, rownum FROM t0;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值