【发布时间】:2016-05-23 14:21:59
【问题描述】:
这是 IIF 格式的查询。
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 '='.
使用等于(=)是非常有必要的。
感谢任何帮助!
【问题讨论】:
-
看看这个:stackoverflow.com/questions/10256848/…。您的 CASE 需要返回 1 或 0,然后比较变为 AND
-
括号里是什么意思?
-
@HoneyBadger 我是
CASE语句的新手。我认为这就是你压缩条件的方式。
标签: sql sql-server case iif