Sql server 2008 使用子查询(动态)和静态值将值传递给in运算符
尝试根据日期范围可用的费率代码选择计划,并且还需要选择费率代码为“无”的计划,这些计划(无)没有日期范围。在这里,我试图将通过子查询返回的费率代码设置为“无”您的问题不太清楚,但您想这样做吗Sql server 2008 使用子查询(动态)和静态值将值传递给in运算符,sql-server-2008,Sql Server 2008,尝试根据日期范围可用的费率代码选择计划,并且还需要选择费率代码为“无”的计划,这些计划(无)没有日期范围。在这里,我试图将通过子查询返回的费率代码设置为“无”您的问题不太清楚,但您想这样做吗 Select bp.id_plan from b_plan bp left outer join b_rate_category brc on bp.rate_code = brc.rate_code left outer join b_rate_categor
Select
bp.id_plan
from
b_plan bp
left outer join
b_rate_category brc on bp.rate_code = brc.rate_code
left outer join
b_rate_category_date brd on brc.id_ratecategory = brd.id_ratecategory
where
bp.hotel = 21
and bp.rate_code in (Select bp.rate_code
from b_plan bp
inner join b_rate_category brc on bp.rate_code = brc.rate_code
inner join b_rate_category_date brd on brc.id_ratecategory = brd.id_ratecategory
where bp.hotel = 21 and brd.Date_planstatus between '2016-04-12' and '2016-04-14', 'None')
注意子查询末尾的OR 请格式化!标记代码并单击
{}
。这是用于哪个RDBMS的?请添加一个标记,以指定您使用的是mysql
、postgresql
、sql server
、oracle
还是db2
-或其他完全不同的功能。为什么在不涉及聚合函数的情况下进行分组?您可以重新登录吗?我做了更改您的查询执行时没有语法错误吗?这个逗号(,)“无”引起了我的注意。我已根据您的更改更新了我的查询。请看一看。如果子查询返回多行,则该方法将失败。
Select
bp.id_plan
from
b_plan bp
left outer join
b_rate_category brc on bp.rate_code = brc.rate_code
left outer join
b_rate_category_date brd on brc.id_ratecategory = brd.id_ratecategory
where
bp.hotel = 21
and bp.rate_code in (Select bp.rate_code
from b_plan bp
left outer join b_rate_category brc on bp.rate_code = brc.rate_code
left outer join b_rate_category_date brd on brc.id_ratecategory = brd.id_ratecategory
where (bp.hotel = 21 and brd.Date_planstatus between '2016-04-12' and '2016-04-14') OR bp.rate_code = 'None')