我正在尝试根据正在搜索的星期几从表中选择 2 个费率列中的 1 个。我正在尝试对这个查询使用两个表:一个日历表(表名=日历,列名=caldates),它是一个严格的日期列表,其中每一行都是 2012 年 6 月 30 日到 2014 年 5 月 31 日之间的日期. 我还有另一个表(表名=rates),它有 4 列:start_date、end_date、weekday_rate 和weekend_rate。
Start_date end_date weekday_rate weekend_rate
"2012-05-01" "2012-06-30" 69 150
"2012-07-01" "2012-08-31" 74 200
"2012-09-01" "2012-11-14" 75 210
"2012-11-15" "2013-01-31" 90 150
执行查询时,系统需要查找正确率。现在我的查询看起来像这样:
SELECT
CASE cast(extract(dow from caldates) as int)
WHEN '0' then (select weekday_rate from rates)
WHEN '1' then (select weekday_rate from rates)
WHEN '2' then (select weekday_rate from rates)
WHEN '3' then (select weekday_rate from rates)
WHEN '4' then (select weekday_rate from rates)
WHEN '5' then (select weekend_rate from rates)
When '6' then (select weekend_rate from rates)
End AS the_date_rate
FROM calendar WHERE caldates >= '2012-08-30' and caldates <= '2012-09-04' ;
当我运行查询时,我收到错误“错误:用作表达式的子查询返回的不止一行。”
我希望输出显示日期范围以及与日期相关的比率。上面的例子看起来像
caldates the_date_rate
2012-08-30 74
2012-08-31 200
2012-09-01 210
2012-09-02 75
2012-09-03 75
2012-09-04 75
有任何想法吗?