SQL加入CASE语句中的Critera

时间:2017-09-19 13:08:12

标签: sql sql-server tsql case

我想知道是否可以在SQL语句的JOIN critera上使用CASE语句。我已尝试使用以下内容,但仍然在''或=

周围收到错误的语法错误

我想要实现的是,在不同的critera上加入configtable,取决于@machineID变量是否等于空格。

有人可以告知我的语法是不正确的,还是不可能的?我想知道它背后的理论,而不仅仅是一个解决方案。

Declare @MachineID int
Declare @TypeID int
Select @MachineID = 1
Select @TypeID = 1

INSERT #Results1 (ID, CustomerID, MachineID, NewStatus, StatusTime)
SELECT A.ID, C.CustomerID, A.MachineID, A.NewStatus, A.StatusTime
FROM Statetable A
INNER JOIN Configtable B
ON CASE WHEN @MachineID = ''
THEN A.StateID = B.StateID AND A.MachineID = B.MachineID AND B.TypeID = @TypeID
WHEN @MACHINEID <> = '' THEN...

1 个答案:

答案 0 :(得分:0)

你不能那样使用它。你可以这样做:

ON 
(@MachineID = '' 
  AND  A.StateID = B.StateID AND A.MachineID = B.MachineID AND B.TypeID = @TypeID)
OR 
(@MACHINEID <> = '' 
  ...