如何在SQL Server查询WHERE条件中使用计算字段? (无效的列名错误)

时间:2019-01-07 15:18:43

标签: sql sql-server database rdbms

我对Microsoft SQL Server不太满意,并且遇到以下问题。

我有这个查询:

SELECT 
     [ID]
    ,[Numero protocollo]
    ,[Anno]
    ,[IdUor]
    ,[Protocollista]
    ,[Protocollato]
    ,[avorato]
    ,[Errore]
    ,[CopiaConoscenza]
    ,[Inoltro]
    ,[DataProtocollo]
    ,GETDATE () AS [Today]
    ,ABS(DATEDIFF(DAY, GETDATE (), [DataProtocollo])) AS [NumberOfDays]
FROM 
    [PROT_INOLTRO]
WHERE 
    [PROT_INOLTRO].IdUor = 1
    AND [PROT_INOLTRO].Protocollista = 'i:0#.w|iwgroupnet\anobili'
    AND [NumberOfDays] < 15
ORDER BY 
    ID DESC

如您所见,我添加了两个计算列:[Today][NumberOfDays]

如您所见,我正在使用3个WHERE条件进行过滤。

我的问题是我需要使用[NumberOfDays]列进行过滤,该列是计算列,而不是直接在PROT_INOLTRO表中定义的列。

执行此查询,我收到以下错误消息:

  

Msg 207,第16级,状态1,第23行
  无效的列名“ NumberOfDays”

为什么在WHERE条件下不能使用此计算列?如何解决我的查询以获得这种行为?

1 个答案:

答案 0 :(得分:0)

像这样使用:

...
AND ABS(DATEDIFF(DAY, GETDATE (), [DataProtocollo]))<15