1

我有一个 SQL 查询,它调用一个存储的 SQL 函数,我想这样做:

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

选择工作正常,但是,它不知道“当前”。即使(没有 WHERE)它生成的数据确实有“当前”列,而且它是正确的。

所以,我假设这是一个符号问题。

4

1 回答 1

4

您不能selectwhere子句中使用别名(甚至在同一个中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.

于 2016-03-07T22:02:59.347 回答