MAX不是可识别的表提示选项

时间:2015-11-05 17:24:11

标签: sql-server stored-procedures

问题:

使用SQL 2012中的存储过程创建表。我过去使用“MAX”来获取最大值,但这次出现以下错误:

“MAX”不是可识别的表提示选项。如果要将其作为表值函数或CHANGETABLE函数的参数,请确保将数据库兼容性模式设置为90.

我试过没有Max和例程运行但当然会给出错误的值,我也尝试了 As FieldNameX 但这没有用。

目的:

获取辅助表中链接列的最大值。即Table1的ID为xyz,Table2有三个xyz列表,“1”,“2”和“3”,所以它应该得到“3”作为放入新表的值。

代码:

USE [Database]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[spPropertyListBCP]
(
    @tableName NVARCHAR(256)     
)
AS
BEGIN 
DECLARE @sql NVARCHAR(MAX)


SET @sql = 'SELECT p.ID AS UniqueID
INTO ' + @tableName  + ' FROM TblProperty AS p
(
MAX(T2.ValueField),
p.BuildingNo,
p.Street 
)
JOIN
TblTable2 as T2 on p.ID= T2.ID'
EXEC (@sql)
END

研究:

其中〜SQL Server 2005 Error - ""MAX" is not a recognized table hints option"似乎转向但我不相信我正是我的追求

1 个答案:

答案 0 :(得分:2)

这是基于对要求的非常含糊的解释而在黑暗中拍摄的。

ALTER PROCEDURE [dbo].[spPropertyListBCP]
(
    @tableName sysname
)
AS
BEGIN 
    DECLARE @sql NVARCHAR(MAX)

    set @sql = 'SELECT p.UPRN AS UPRN
        , MAX(T2.ValueField) As ValueFieldName
        , p.BuildingNo
        , p.Street 
    INTO ' + QUOTENAME(@tableName)  + ' 
    FROM TblProperty AS p
    JOIN TblTable2 as T2 on p.ID = T2.ID
    GROUP BY p.UPRN
        , p.BuildingNo
        , p.Street';

    exec sp_executesql @sql
END