Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以在COALESCE SQL Server中使用IF语句_Sql_Sql Server - Fatal编程技术网

是否可以在COALESCE SQL Server中使用IF语句

是否可以在COALESCE SQL Server中使用IF语句,sql,sql-server,Sql,Sql Server,我有一个用于分页的合并语句。但是,我想在其内部使用IF语句,如下所示: OFFSET (@PageNumber - 1) * COALESCE(@RowsPerPage, IF(@TotalNumberOfRows > 1000, 1000, @TotalNumberOfRows), 0) ROWS 因此,如果未设置@RowsPerPage的数量,那么它将使用查询返回的@TotalNumberOfRows。但是,如果@TotalNumberOfRows超过1000,我希望它使用1000

我有一个用于分页的合并语句。但是,我想在其内部使用IF语句,如下所示:

OFFSET (@PageNumber - 1) * COALESCE(@RowsPerPage, IF(@TotalNumberOfRows > 1000, 1000, @TotalNumberOfRows), 0) ROWS
因此,如果未设置
@RowsPerPage
的数量,那么它将使用查询返回的
@TotalNumberOfRows
。但是,如果
@TotalNumberOfRows
超过1000,我希望它使用1000

我得到的错误是:

关键字“IF”附近的语法不正确

这:


SQL Server中的Use
CASE
是一种逻辑流操作,而不是函数。您似乎想要,而不是
IF
,这是一个简写的
大小写
表达式。
OFFSET (@PageNumber - 1) * COALESCE(@RowsPerPage,IIF(@TotalNumberOfRows > 1000, 1000, @TotalNumberOfRows),0) ROWS
OFFSET (@PageNumber - 1) * COALESCE(@RowsPerPage,CASE WHEN @TotalNumberOfRows > 1000 THEN 1000 ELSE @TotalNumberOfRows END,0) ROWS