我有一个SQL查询,它调用存储的SQL函数,我想这样做:
SELECT dbo.fn_is_current('''{round}''', r.fund_cd, r.rnd) as [current]
FROM BLAH
WHERE current = 1
选择工作正常,但是,它不知道“当前”。即使(没有WHERE)它生成的数据也有“当前”列,并且它是正确的。
所以,我假设这是一个符号问题。
答案 0 :(得分:4)
您不能使用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
。