首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TSQL输出行计数

TSQL输出行计数
EN

Stack Overflow用户
提问于 2014-06-29 20:45:52
回答 2查看 207关注 0票数 0

我有一个存储过程,它以XML格式输出我的结果;所有的输出都很好。

不过,我需要包括它正在输出的行计数,如果可能的话,也包括行计数。

代码语言:javascript
复制
 SELECT A.[id],
             A.[petName],
             A.[petCaption],
             B.[petType],
             C.[FirstName] as ownerFirstName,
             C.[LastName] as ownerLastName,
             A.[imageName],

             (
                SELECT CONVERT(varchar(20),sum(transactionAmount), 1) as totalRaised
                FROM petContestTransactionsDonations
                WHERE submissionID = A.[id]
                FOR    XML PATH ('transactionDetails'), TYPE, ELEMENTS
             )
      FROM petContestSubmissions as A
      LEFT OUTER JOIN petContestTypes as B
      ON A.[petType] = B.[id]
      LEFT OUTER JOIN EmpTable as C
      ON A.[empID] = C.EmpID
      LEFT OUTER JOIN petContestTransactionsEntries as E
      ON E.[submissionID] = A.[id]
      WHERE E.[transactionStatus] = 'completed'
     ORDER BY A.[id] 
        OFFSET  @offset ROWS 
        FETCH NEXT @rows ROWS ONLY 
      FOR    XML PATH ('submission'), TYPE, ELEMENTS, ROOT ('root');

我将offsetrows传递给存储过程,因为我正在使用它进行分页。它正在获取限制为X行的页面记录。

即使我说给我接下来的10张唱片,它可能只剩下8张了。这就是我需要返回的内容;它在select语句中找到的总记录。

在存储过程中还是在遍历记录的我的php中最好这样做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-29 20:47:17

如果希望在每一行上计算行数,则包括:

代码语言:javascript
复制
count(*) over () as RowCount

在最外层的select子句中。

如果您想先将所有数据读入应用程序,那么请在应用程序层中进行。

编辑:

如果您想要查询返回的行数,那么最好在应用层中这样做。你也可以:

代码语言:javascript
复制
select t.*, count(*) over () as RowCOunt
from (<your query here>) t;
票数 1
EN

Stack Overflow用户

发布于 2014-06-29 21:39:51

也许这个能满足你的需要。不在同一个查询中,但您可以尝试

代码语言:javascript
复制
SELECT @@ROWCOUNT AS RowsAffected

在查询之后,您应该立即得到您要查找的内容。@@ROWCOUNT是每个会话,所以只要您不结束连接,就应该没事。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24480116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档