Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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_Gridview_Sql Server 2012 - Fatal编程技术网

Sql 如何准确计算有限总数的百分比

Sql 如何准确计算有限总数的百分比,sql,sql-server,gridview,sql-server-2012,Sql,Sql Server,Gridview,Sql Server 2012,我正在创建一个报告,该报告将告诉最终用户在给定的一个月内完成的gridview记录总数占有限记录数的百分比。我有一个gridview,其中包含我导入的记录,用户必须进入每个记录并更新几个字段。我试图创建一个报告,告诉我在给定的一个月内完成记录总数的百分比。我只需要百分比。这个例子的总数是2000。 我不确定这里是否需要实际的gridview信息/代码,但如果需要,请告诉我,我会添加它。 问题是,我已经能够计算总百分比,但是当它显示时,表中的每一行都会重复总百分比。我正在琢磨如何使这个结果只出现一

我正在创建一个报告,该报告将告诉最终用户在给定的一个月内完成的gridview记录总数占有限记录数的百分比。我有一个gridview,其中包含我导入的记录,用户必须进入每个记录并更新几个字段。我试图创建一个报告,告诉我在给定的一个月内完成记录总数的百分比。我只需要百分比。这个例子的总数是2000。 我不确定这里是否需要实际的gridview信息/代码,但如果需要,请告诉我,我会添加它。 问题是,我已经能够计算总百分比,但是当它显示时,表中的每一行都会重复总百分比。我正在琢磨如何使这个结果只出现一次。 下面是我使用nvarchar的SQL代码,因为我们从许多非windows系统导入,并在信息中添加了各种额外字符和空格:

假设在本例中,12月份输入的日期记录中的记录总数为500。 我已经分别尝试了较小的代码块,但没有成功。这是我最近试过的一件事。 我知道我遗漏了一些简单的东西,但我不确定是什么

::编辑::


作为查询的预期结果,我希望在给定的一个月内修改记录的百分比。如果做了500个记录,那将是25%。我只想让25和training小数在应用时显示一次,而不是在表中每行显示25。

为什么选择常量值castround@divNumber/@DateCount,1为表中的小数点5,1?这就是你问题的原因。
我对sql server不太熟悉,但您可以尝试在不使用from子句的情况下进行选择。

以下查询应提供您要查找的内容:

Declare @DivNumber decimal(5,1);

SET @DivNumber = (.01 * 2541);

SELECT 
    CAST(ROUND(@DivNumber / Count(date_record_entered), 1) AS decimal(5,1))
  FROM dbo.tablename 
 WHERE date_record_entered IS NOT NULL 
   and date_record_entered >= 20131201 
   AND date_record_entered <= 20131231

您能否提供数据示例和查询的预期结果?您具体在@wdosanjos中寻找什么?dbo.tablename表中的一些示例行和SELECT语句中的预期结果。一旦我有了这些信息,我可以尝试提供一个解决方案。更新了这个帖子的第一篇文章。就这样做了。在这件事上我完全是在打转。谢谢
Declare @DivNumber decimal(5,1);

SET @DivNumber = (.01 * 2541);

SELECT 
    CAST(ROUND(@DivNumber / Count(date_record_entered), 1) AS decimal(5,1))
  FROM dbo.tablename 
 WHERE date_record_entered IS NOT NULL 
   and date_record_entered >= 20131201 
   AND date_record_entered <= 20131231
select emp.Natinality_Id,mstn.Title as Nationality,count(emp.Employee_Id) as Employee_Count,
count(emp.Employee_Id)* 100.0 /nullif(sum(count(*)) over(),0)  as Nationality_Percentage
FROM Employee as emp
left join Mst_Natinality as mstn on mstn.Natinality_Id = emp.Natinality_Id
where
emp.Is_Deleted='false'
group by emp.Natinality_Id,mstn.Title