SELECT TOP 5 *
FROM
CrmCallinBase
WHERE
(CallNr NOT IN (SELECT TOP ( 50* 2) CallNr FROM CrmCallinBase ORDER BY CallNr DESC))
ORDER BY
CallNr DESC
执行报错:伺服器: 訊息 170,層級 15,狀態 1,行 7 行 7: '(' 附近的語法不正確。
------解决方案--------------------
2000的话不能直接用TOP+括号传参的方式
要用动态sql,或者你直接写100
------解决方案--------------------
拼接动态sql
exec (@sql)
------解决方案--------------------
只能轉為字符再執行
------解决方案--------------------
給你個例子參照
- SQL code
DECLARE @sql NVARCHAR(4000)SET @sql='SELECT TOP '+RTRIM(5)+' *FROM CrmCallinBaseWHERE (CallNr NOT IN (SELECT TOP 'rtrim(50* 2)+' CallNr FROM CrmCallinBase ORDER BY CallNr DESC))ORDER BY CallNr DESC' EXEC (@sql)
------解决方案--------------------
top里面不能这样 需要动态SQL执行。
转换为字符串格式的执行。