这是IIF格式的查询。将IIF转换为CASE语句(THEN&ELSE语句中的错误)
SELECT [userinfo].[dp_url]
,[message_threads].[thread_id]
,[userinfo].[fname]
,[userinfo].[lname]
,[userinfo].[profile_id]
FROM [message_threads]
LEFT JOIN [userinfo] ON (IIF([message_threads].[from] <> 2, [userinfo].[profile_id] = [message_threads].[from], [userinfo].[profile_id] = [message_threads].[to]))
WHERE (IIF([message_threads].[from] <> 2, [to] = 2, [from] = 2))
ORDER BY [last_updated_on] DESC
这是我迄今为止用CASE语句所做的。
SELECT [userinfo].[dp_url]
,[message_threads].[thread_id]
,[userinfo].[fname]
,[userinfo].[lname]
,[userinfo].[profile_id]
FROM [message_threads]
LEFT JOIN [userinfo] ON (
CASE
WHEN ([message_threads].[from] <> 2)
THEN ([userinfo].[profile_id] = [message_threads].[from])
ELSE ([userinfo].[profile_id] = [message_threads].[to])
END
)
WHERE (
CASE
WHEN ([message_threads].[from] <> 2)
THEN ([to] = 2)
ELSE ([from] = 2)
END
)
ORDER BY [last_updated_on] DESC
,我发现了以下错误:
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '='.
这是非常必要使用等于(=)。
任何帮助表示赞赏!
看看这个:http://stackoverflow.com/questions/10256848/can-i-use-case-statement-in-a-join-condition。您的CASE需要返回1或0,然后比较结果变为AND – GinjaNinja
括号中的内容是什么? – HoneyBadger
@HoneyBadger我是“CASE”语句的新手。我认为这就是你压缩条件的方式。 –