Мне нужно временное решение проблемы, которую я создал. По сути, я хочу вычислить два значения, но использую другой метод, зависящий от результата условия.
select userReturnval, userregisterid, OtherValue
FROM
(
(SELECT otherValue
FROM...
) as tblO --unrelated table
,
(
if (select count(userregisterid) from table1 where site =@siteID and userid=@userID) >0
SELECT userReturnval, userregisterid
FROM
(
SELECT userReturnval, userregisterid, Rank() OVER (PARTITION BY .. ORDER BY ...) as RANK
FROM ...
WHERE --first where clause
) as tblRank
WHERE (RANK =1)
else
SELECT userReturnval, userregisterid
FROM
(
SELECT userReturnval, userregisterid, Rank() OVER (PARTITION BY .. ORDER BY ...) as RANK
FROM ...
WHERE --different where clause
) as tblRank
WHERE (RANK =1)
) as tblR
My if работает нормально само по себе, я просто включаю его как часть более крупного запроса. На данный момент sqlserver не нравится, если он там находится.
Надеюсь, кто-то может указать мне правильное направление!