Sql 从包含多个派生表的存储过程返回输出参数
如何将以下存储过程中由星号标记的最内部SELECT语句的计数作为输出参数返回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
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子句。应该有用