代码之家  ›  专栏  ›  技术社区  ›  AndreaNobili

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

  •  -2
  • AndreaNobili  · 技术社区  · 7 年前

    我不太喜欢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条件进行过滤。

    我的问题是我需要使用 [数日] 列,该列是计算列,而不是直接在 PROT_INOLTRO 表。

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

    消息207,级别16,状态1,第23行
    列名称“numberofdays”无效

    为什么我不能在我的 WHERE 条件?如何修复我的查询以获取此行为?

    1 回复  |  直到 7 年前
        1
  •  0
  •   apomene    7 年前

    这样使用:

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