日期:2014-05-17  浏览次数:20626 次

SELECT TOP(1)后赋值给变量的问题
SQL code
DECLARE @assetClassNo NVARCHAR(50)    SET @assetClassNo='07-01-01'
DECLARE @iNum NVARCHAR(10)
SELECT TOP (1) RIGHT(卡片编号,4) FROM FIXEDASSET WHERE 卡片编号 LIKE '%'+@assetClassNo+'%' AND LEN(卡片编号)=LEN(@assetClassNo)+5 ORDER BY 卡片编号 DESC


上面这段SQL语句可以正常执行
SQL code
DECLARE @assetClassNo NVARCHAR(50)    SET @assetClassNo='07-01-01'
DECLARE @iNum NVARCHAR(10)
SELECT @iNum=TOP (1) RIGHT(卡片编号,4) FROM FIXEDASSET WHERE 卡片编号 LIKE '%'+@assetClassNo+'%' AND LEN(卡片编号)=LEN(@assetClassNo)+5 ORDER BY 卡片编号 DESC


但是如果我想赋值给一个变量的话就会报错了,请问怎么解决
(消息 156,级别 15,状态 1,第 3 行
关键字 'TOP' 附近有语法错误。
)

------解决方案--------------------
SQL code

--top 1 要放到前面
DECLARE @assetClassNo NVARCHAR(50)    SET @assetClassNo='07-01-01'
DECLARE @iNum NVARCHAR(10)
SELECT TOP 1 @iNum=RIGHT(卡片编号,4) FROM FIXEDASSET WHERE 卡片编号 LIKE '%'+@assetClassNo+'%' AND LEN(卡片编号)=LEN(@assetClassNo)+5 ORDER BY 卡片编号 DESC