浏览了 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
谢谢蚂蚁
从您的问题中我无法确定您是否要在一个查询中获取计数和结果集。如果可以执行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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。