Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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
Sql 从包含多个派生表的存储过程返回输出参数_Sql_Sql Server 2008 - Fatal编程技术网

Sql 从包含多个派生表的存储过程返回输出参数

Sql 从包含多个派生表的存储过程返回输出参数,sql,sql-server-2008,Sql,Sql Server 2008,如何将以下存储过程中由星号标记的最内部SELECT语句的计数作为输出参数返回 Create procedure MySp AS Select RowNumber,NewsId From ( Select Row_Number() Over (ORDER BY FirstVisit) as 'RowNumber',NewsId From ( * Select Distinct NewsId,FirstVisit,PublishDate Fro

如何将以下存储过程中由星号标记的最内部SELECT语句的计数作为输出参数返回

Create procedure MySp 
AS
Select  RowNumber,NewsId From 
(
    Select Row_Number() Over (ORDER BY FirstVisit) as 'RowNumber',NewsId From 
        (
            * Select Distinct NewsId,FirstVisit,PublishDate From VwNewsPack 
        ) as t
) as tt         
Where NewsId between 10 and 20

你不可能一次完成。也就是说,既可以指定一个变量,也可以选择一个结果集。这是另一个

您可以返回一个额外的列:

Select  RowNumber,NewsId,InnerCount From 
(
    Select Row_Number() Over (ORDER BY FirstVisit) as 'RowNumber', NewsId
      , COUNT(*) OVER () AS InnerCount
    From 
       (
        Select Distinct NewsId,FirstVisit,PublishDate From VwNewsPack 
    ) as t
) as tt         
Where NewsId between 10 and 20

如果这还不够好,那么您需要一个临时表用于内部select,并将@ROWCOUNT指定为变量

您应该用您正在使用的RDBMS而不是问题中的随机词来标记它。不,不是用RDBMS这个词,而是用您正在使用的RDBMS的名称。。。神谕DB2?SQL Server?博士后?除非我们知道此查询用于哪个RDBMS,否则无法回答此问题。谢谢,但您的第一个解决方案不起作用。它迫使我使用GROUPBY子句。@瓦希德·加迪里:对不起,现在添加了OVER子句。应该有用