我想知道是否可以在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...
答案 0 :(得分:0)
你不能那样使用它。你可以这样做:
ON
(@MachineID = ''
AND A.StateID = B.StateID AND A.MachineID = B.MachineID AND B.TypeID = @TypeID)
OR
(@MACHINEID <> = ''
...