SQL from语句中的IF子句
我需要一个临时的解决方案来解决我造成的问题。基本上我想计算两个值,但根据条件的结果使用不同的方法 选择userReturnval、userregisterid和OtherValue 从…起 选择其他值 从…起 as tblO-不相关表 , 如果从表1中选择countuserregisterid,其中site=@siteID和userid=@userid>0 选择userReturnval、userregisterid 从…起 选择userReturnval、userregisterid、按分区排序。。订购人。。。作为等级 从…起 WHERE-第一WHERE子句 作为tblRank 其中秩=1 其他的 选择userReturnval、userregisterid 从…起 选择userReturnval、userregisterid、按分区排序。。订购人。。。作为等级 从…起 WHERE-不同WHERE子句 作为tblRank 其中秩=1 作为tblR 我的if本身工作得很好,我只是想让它作为更大查询的一部分工作。目前,sqlserver不喜欢if在其中SQL from语句中的IF子句,sql,sql-server,tsql,if-statement,Sql,Sql Server,Tsql,If Statement,我需要一个临时的解决方案来解决我造成的问题。基本上我想计算两个值,但根据条件的结果使用不同的方法 选择userReturnval、userregisterid和OtherValue 从…起 选择其他值 从…起 as tblO-不相关表 , 如果从表1中选择countuserregisterid,其中site=@siteID和userid=@userid>0 选择userReturnval、userregisterid 从…起 选择userReturnval、userregisterid、按分区排
希望有人能给我指出正确的方向 您可以尝试在WHERE子句中使用case语句,类似于下面的语句。请注意,我不认为这对性能特别有利 这样做确实可以让您将其保留为一条语句:
select userReturnval, userregisterid, OtherValue
FROM
(
(SELECT otherValue
FROM...
) as tblO --unrelated table
,
(
SELECT userReturnval, userregisterid
FROM
(
SELECT userReturnval, userregisterid, Rank() OVER (PARTITION BY .. ORDER BY ...) as RANK
FROM ...
WHERE
case --Choose which where clause to use
when (select count(userregisterid) from table1 where site =@siteID and userid=@userID) >0 then
case when /*First where clause*/ then 1
else 0
end
else
case when /*Second where clause*/ then 1
else 0
end
end
= 1
) as tblRank
WHERE (RANK =1)
) as tblR
我假设您执行的不是一个查询。请确认它是存储过程中的T-SQL?是的。我将返回一个helper对象,该对象包含从DB中获取的多个单独的值。单独计算的表之间没有联接。不喜欢意味着什么?是否有任何错误消息或只是意外行为?请再详细一点。我认为您需要首先使用您的条件填充临时表变量,然后从这些表中选择。userReturnval和userregisterid来自何处,以及IF操作与其他操作有何不同?谢谢!这是做这件事的方法。显然,这只是一个临时措施——我在几周内无法修补,否则我将创建新的程序并调用它们。再次感谢!