Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 使用子查询(动态)和静态值将值传递给in运算符_Sql Server 2008 - Fatal编程技术网

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')