首页 > 解决方案 > ....不是公认的表格提示选项。....确保您的数据库兼容模式设置为 90。”

问题描述

我在代码中经常出现错误

CustomerSales 不是公认的表提示选项。如果它打算作为表值函数的参数,请确保您的数据库兼容模式设置为 90。

其他几个表也发生了这种情况,例如 Hires、CustomerNumbers 等。

我在谷歌上看到了这个建议,但我不确定这是否是最好的选择?或者首先可能是什么导致了错误?

谁能告知可能导致此类错误的原因和最佳解决方案?

ALTER DATABASE database_name SET COMPATIBILITY_LEVEL = { 150 | 140 | 130 | 120 | 110 | 100 | 90 }

https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql-compatibility-level?view=sql-server-ver15

我收到错误的代码示例如下:

WITH CustomerAges AS 
(
    SELECT 
        P.FirstName, P.LastName,        
        FLOOR (DATEDIFF(DAY, PD.BirthDate, GETDATE()) / 365.25) AS AGE          
    FROM 
        Sales.vPersonDemographics PD        
    INNER JOIN 
        Person.Person P ON P.BusinessEntityID = PD.BusinessEntityID
)
SELECT 
    *, 
    CASE
        WHEN Age IS NULL THEN 'Unknown Age'         
        WHEN Age BETWEEN 0 and 17 THEN 'Under 18'       
        WHEN Age BETWEEN 18 and 24 THEN '18 - 24'       
        WHEN Age BETWEEN 25 and 34 THEN '25 - 34'       
        WHEN Age BETWEEN 35 and 49 THEN '35 - 49'       
        WHEN Age BETWEEN 50 and 64 THEN '50 - 64'       
        ELSE 'Over 65'      
     END AS AgeRange  
 FROM 
     CustomerAges

标签: sql-servertsqlcompatibility

解决方案


推荐阅读