我对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
条件下不能使用此计算列?如何解决我的查询以获得这种行为?
答案 0 :(得分:0)
像这样使用:
...
AND ABS(DATEDIFF(DAY, GETDATE (), [DataProtocollo]))<15