开发者社区> 问答> 正文

如何在存储过程中使用@@ RowCount,对照另一个表中的行计算百分比?

浏览了 53次

0

首先,我可以说一下,我知道以下能力:例如,创建一个新函数,为rowcount1和rowcount2声明变量,运行存储过程以从表中返回行的子集,然后确定该行的整个行数同一张表,将其分配给第二个变量,然后分配给1/2 x 100 ....

但是,是否有一种更清洁的方式来执行此操作,而不会导致像此存储过程这样的事情大量运行?就像是

select (count(*stored procedure name*) / select count(*) from table) x 100) as Percentage...

对不起,废话!

编辑:有人要求更多细节。最终,简而言之,我想知道人们会考虑哪种最快,最简洁的方法来显示存储过程中返回的行的百分比(从该行中所有可用行中得出)表。这更有意义吗?

存储过程中的代码如下:

SET @SQL = 'SELECT COUNT (DISTINCT c.ElementLabel), r.FirstName, r.LastName, c.LastReview, 
    CASE
        WHEN c.LastReview < DateAdd(month, -1, GetDate())  THEN ''OUT of Date''
        WHEN c.LastReview >= DateAdd(month, -1, GetDate()) THEN ''In Date'' 
        WHEN c.LastReview is NULL THEN ''Not Yet Reviewed'' END as [Update Status]

    FROM [Residents-'+@home_name+'] r
    LEFT JOIN [CarePlans-'+@home_name+'] c ON r.PersonID = c.PersonID
    WHERE r.Location = '''+@home_name+'''
    AND CarePlanType = 0
    GROUP BY r.LastName, r.FirstName, c.LastReview
    HAVING COUNT(ELEMENTLABEL) >= 14

谢谢蚂蚁

展开
收起
祖安文状元 2020-01-03 19:02:07 597 0
1 条回答
写回答
取消 提交回答
  • 从您的问题中我无法确定您是否要在一个查询中获取计数和结果集。如果可以执行SP并单独计算表计数,则可以将存储过程的结果存储到临时表中。

    CREATE TABLE #Results(ID INT, Value INT)
    
    INSERT #Results EXEC myStoreProc @Parameter1, @Parameter2
    
    SELECT 
         Result = ((SELECT COUNT(*) FROM #Results) / (select count(*) from table))* 100
    
    
    2020-01-03 19:02:24
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载