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 基于参数化值的条件连接表_Sql Server 2008_Tsql - Fatal编程技术网

Sql server 2008 基于参数化值的条件连接表

Sql server 2008 基于参数化值的条件连接表,sql-server-2008,tsql,Sql Server 2008,Tsql,是否可以基于参数进行条件联接;例如: //PSEUDE CODE: DECLARE @condition bit SET @condition=1 or 0 SELECT * FROM tableA INNER JOIN tableB on tableA.SomeColumn = tableB.SomeColumn if @condition = 0 THEN INNER JOIN tableC ON tableC.SomeCOlumn = TableA.SomeColumn

是否可以基于参数进行条件联接;例如:

//PSEUDE CODE:
DECLARE @condition bit
SET @condition=1 or 0 

SELECT * 
FROM tableA 
INNER JOIN tableB on tableA.SomeColumn = tableB.SomeColumn 
if @condition = 0 THEN 
   INNER JOIN tableC ON tableC.SomeCOlumn = TableA.SomeColumn 
ELSE
   INNER JOIN tableD ON tableD.SomeColumn=TableA.someColumn

谢谢你

你可以用动态查询来完成

declare @sql_str varchar(500)
if @contidion=0
@sql_str='INNER JOIN tableC ON tableC.SomeCOlumn=TableA.SomeColumn'
else
@sql_str='INNER JOIN tableD ON tableD.SomeColumn=TableA.someColumn'

exec('SELECT * FROM tableA INNER JOIN tableB on 
 tableA.SomeColumn=tableB.SomeColumn' +@sql_str)
描述 您可以构建包含查询的varchar,并使用
exec
执行它们

在Transact-SQL批处理或以下模块之一中执行命令字符串或字符串:系统存储过程、用户定义存储过程、CLR存储过程、标量值用户定义函数或扩展存储过程

样品 更多信息
    • 这是可能的,请参阅

      但是在这种情况下,如果您的条件是预定义的,并且不是太多,我宁愿使用多个if语句。这更易于阅读和维护

      If (condition1)
       Select * From tblA
      Else If (condition2)
       Select * From tblA Inner Join tblB ...
      Else If (condition3)
       .....
      

      不,不是真的。如果你想多说一点你想要达到的目标,可能还有很多其他方法可以达到你想要的结果。您可以有两个查询并使用
      if
      来决定执行哪个查询;无论如何谢谢你:)@Avicena00:不客气。我认为除此之外,有条件的加入是不可能的
      If (condition1)
       Select * From tblA
      Else If (condition2)
       Select * From tblA Inner Join tblB ...
      Else If (condition3)
       .....