Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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 在SQL查询中使用CASE_Sql Server - Fatal编程技术网

Sql server 在SQL查询中使用CASE

Sql server 在SQL查询中使用CASE,sql-server,Sql Server,我有这样一个SQL查询: SELECT * FROM table1 INNER JOIN table2 ON table1.key = table2.key INNER JOIN table3 ON table1.var = table3.var INNER JOIN table4 ON table1.field = table4.field 但我只想在变量具有特定值(iMarket=250及以上)时包含table3连接 我正试图让这种情况发挥作用: SELECT * FROM table

我有这样一个SQL查询:

SELECT * 
FROM table1
INNER JOIN table2 ON table1.key = table2.key
INNER JOIN table3 ON table1.var = table3.var
INNER JOIN table4 ON table1.field = table4.field
但我只想在变量具有特定值(iMarket=250及以上)时包含table3连接

我正试图让这种情况发挥作用:

SELECT * 
FROM table1
INNER JOIN table2 ON table1.key = table2.key
CASE 
   WHEN iMarket > 250 
     THEN INNER JOIN table3 ON table1.var = table3.var
END
INNER JOIN table4 on table1.field = table4.field

这是一段伪代码,但它与我试图做的接近。什么都不管用。有没有更简单的方法?我想排除此联接,因为如果该变量低于某个值,它总是失败。谢谢大家!

在join
on
子句中包含条件同样容易:

SELECT * from table1
INNER JOIN table2 on table1.key=table2.key
INNER JOIN table3 on iMarket>250 and table1.var=table3.var
INNER JOIN table4 on table1.field=table4.field
请记住,如果您需要其他表中的所有值,尽管它们与
表3
不匹配,但仍需要使用外部联接,可能您正在寻找以下行为:

SELECT * from table1
INNER JOIN table2 on table1.key=table2.key
INNER JOIN table4 on table1.field=table4.field
left outer join   --<--
           table3 on iMarket>250 and table1.var=table3.var
从表1中选择*
表1上的内部联接表2.key=table2.key
表1上的内部联接表4.field=表4.field
左外联接--250和table1.var=table3.var

在join
on
子句中包含条件同样容易:

SELECT * from table1
INNER JOIN table2 on table1.key=table2.key
INNER JOIN table3 on iMarket>250 and table1.var=table3.var
INNER JOIN table4 on table1.field=table4.field
请记住,如果您需要其他表中的所有值,尽管它们与
表3
不匹配,但仍需要使用外部联接,可能您正在寻找以下行为:

SELECT * from table1
INNER JOIN table2 on table1.key=table2.key
INNER JOIN table4 on table1.field=table4.field
left outer join   --<--
           table3 on iMarket>250 and table1.var=table3.var
从表1中选择*
表1上的内部联接表2.key=table2.key
表1上的内部联接表4.field=表4.field
左外联接--250和table1.var=table3.var

在join
on
子句中包含条件同样容易:

SELECT * from table1
INNER JOIN table2 on table1.key=table2.key
INNER JOIN table3 on iMarket>250 and table1.var=table3.var
INNER JOIN table4 on table1.field=table4.field
请记住,如果您需要其他表中的所有值,尽管它们与
表3
不匹配,但仍需要使用外部联接,可能您正在寻找以下行为:

SELECT * from table1
INNER JOIN table2 on table1.key=table2.key
INNER JOIN table4 on table1.field=table4.field
left outer join   --<--
           table3 on iMarket>250 and table1.var=table3.var
从表1中选择*
表1上的内部联接表2.key=table2.key
表1上的内部联接表4.field=表4.field
左外联接--250和table1.var=table3.var

在join
on
子句中包含条件同样容易:

SELECT * from table1
INNER JOIN table2 on table1.key=table2.key
INNER JOIN table3 on iMarket>250 and table1.var=table3.var
INNER JOIN table4 on table1.field=table4.field
请记住,如果您需要其他表中的所有值,尽管它们与
表3
不匹配,但仍需要使用外部联接,可能您正在寻找以下行为:

SELECT * from table1
INNER JOIN table2 on table1.key=table2.key
INNER JOIN table4 on table1.field=table4.field
left outer join   --<--
           table3 on iMarket>250 and table1.var=table3.var
从表1中选择*
表1上的内部联接表2.key=table2.key
表1上的内部联接表4.field=表4.field
左外联接--250和table1.var=table3.var

SQL中的CASE语句只能返回一个值。它不能直接控制流。实际上,T-SQL中的
CASE
是一个表达式,而不是一个语句,一个表达式只能计算为一个(可能是多个)值,不能用于“有条件地”联接表……SQL中的CASE语句只能返回一个值。它不能直接控制流。实际上,T-SQL中的
CASE
是一个表达式,而不是一个语句,一个表达式只能计算为一个(可能是多个)值,不能用于“有条件地”联接表……SQL中的CASE语句只能返回一个值。它不能直接控制流。实际上,T-SQL中的
CASE
是一个表达式,而不是一个语句,一个表达式只能计算为一个(可能是多个)值,不能用于“有条件地”联接表……SQL中的CASE语句只能返回一个值。它不能直接控制流。事实上,T-SQL中的
CASE
是一个表达式,而不是一个语句,表达式只能计算为一个(可能是多个)值,不能用于“有条件地”联接表……谢谢大家,你们帮了大忙!谢谢大家,你们帮了大忙!谢谢大家,你们帮了大忙!谢谢大家,你们帮了大忙!