Sql 如何根据条件选择左连接

Sql 如何根据条件选择左连接,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在尝试根据SQL Server数据库中的条件运行左联接。代码如下: DECLARE @DB as nvarchar(25) $DB = 'db1' --I can just reset this from time to time SELECT h.name, h.address, w.status FROM [db0].[dbo].[orec] h IF ($DB = 'db1') BEGIN LEFT JOIN [db1].[dbo].[oabc] w on h.id =

我正在尝试根据SQL Server数据库中的条件运行左联接。代码如下:

DECLARE @DB as nvarchar(25)

$DB = 'db1' --I can just reset this from time to time

SELECT h.name, h.address, w.status
FROM [db0].[dbo].[orec] h
IF ($DB = 'db1')
  BEGIN
    LEFT JOIN [db1].[dbo].[oabc] w on h.id = w.id
  END
ELSE
  BEGIN
    LEFT JOIN [db2].[dbo].[oabc] w on h.id = w.id
  END

您可以尝试条件联接:

SELECT h.[name], h.[address], coalesce(w1.[status],w2.[status]) [status]
FROM [db0].[dbo].[orec] h
LEFT JOIN [db1].[dbo].[oabc] w1 on h.id = w1.id and @DB = 'db1'
LEFT JOIN [db2].[dbo].[oabc] w2 on h.id = w2.id and @DB != 'db1';

您可以尝试条件联接:

SELECT h.[name], h.[address], coalesce(w1.[status],w2.[status]) [status]
FROM [db0].[dbo].[orec] h
LEFT JOIN [db1].[dbo].[oabc] w1 on h.id = w1.id and @DB = 'db1'
LEFT JOIN [db2].[dbo].[oabc] w2 on h.id = w2.id and @DB != 'db1';

我假设
$DB
实际上应该是
@DB
?但无论如何,您不能在查询中使用条件语句。我假设
$DB
实际上应该是
@DB
?但无论如何,您不能在查询中使用条件语句。