2016-03-07 3 views
0

У меня есть запрос SQL, который вызывает хранимую функцию SQL, я хочу сделать это:Используя функцию сгенерированного столбца в котором положение

SELECT dbo.fn_is_current('''{round}''', r.fund_cd, r.rnd) as [current] 
FROM  BLAH 
WHERE  current = 1 

Отборных отлично работает, однако, не знайте «текущий». Несмотря на то, что (без WHERE) генерируемые данные имеют «текущий» столбец, и это правильно.

Итак, я предполагаю, что это нотация.

ответ

3

Вы не можете использовать псевдоним из select в предложении where (или даже снова в том же select). Просто используйте подзапрос:

SELECT t.* 
FROM (SELECT dbo.fn_is_current('''{round}''', r.fund_cd, r.rnd) as [current] 
     FROM BLAH 
    ) t 
WHERE [current] = 1; 

Как примечание: current очень плохое имя для столбца, поскольку это зарезервированное слово (во многих базах данных, по крайней мере, в том числе SQL Server). Слово используется при определении курсоров. Используйте что-то еще, например currval.

+0

Спасибо! Фактически это имя нужного столбца (для «это текущие данные текущей строки или исторические данные?»). Но спасибо, я постараюсь, чтобы это было как минимум ... –