Sql server 在SQL查询中使用CASE
我有这样一个SQL查询: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
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
在joinon
子句中包含条件同样容易:
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
在joinon
子句中包含条件同样容易:
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
在joinon
子句中包含条件同样容易:
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
是一个表达式,而不是一个语句,表达式只能计算为一个(可能是多个)值,不能用于“有条件地”联接表……谢谢大家,你们帮了大忙!谢谢大家,你们帮了大忙!谢谢大家,你们帮了大忙!谢谢大家,你们帮了大忙!