2014-01-15 35 views
0

我正在创建一个报告,告知最终用户GridView的百分比(记录的总数是有限数量)在给定月份内已完成。我有一个gridview,包含我导入的记录,用户必须进入每条记录并更新几个字段。我试图创建一份报告,告诉我在特定月份中完成的记录总数的百分比。我需要的只是百分比。总计是(在这个例子中)是2000.

我不确定在这里是否需要实际的gridview信息/代码,但如果它确实需要,请告诉我,我会添加它。

问题是我已经能够计算总的百分比,但是当它显示时,表格中的每一行重复的百分比总数。我在摸索如何让这个结果只出现一次。

现在这里就是我有我的SQL代码(我用nvarchar的,因为我们从许多非Windows系统导入和获取各种额外字符,并添加空格到我们的信息):

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

Declare @DateCount nvarchar(max); 
Declare @DivNumber decimal(5,1); 

SET @DivNumber = (.01 * 2541); 
SET @DateCount = (SELECT (Count(date_record_entered) FROM dbo.tablename WHERE date_record_entered IS NOT NULL and date_record_entered >= 20131201 AND date_record_entered <= 20131231); 

SELECT CAST(ROUND(@DivNumber/@DateCount, 1) AS decimal(5,1) FROM dbo.tablename 

让我们对于这个例子来说,12月份的date_record_entered中的记录总数是500.

我已经尝试了单独的小代码片段,但没有成功。这是我尝试过的最近的事情。

我知道我在这里错过了一些简单的东西,但我不确定是什么。

::编辑::

我正在寻找我的查询的预期结果是有代表在给定月份修改记录的百分比。如果500条记录完成了25%。我只想在这个表中显示一次而不是25次显示的每一行25(和适用的小数)。

+0

您可以提供数据的样本和查询的预期效果? – wdosanjos

+0

你在找什么@wdosanjos? –

+0

“dbo.tablename”表中的一些示例行以及“SELECT”语句的预期结果。一旦我有了这些信息,我可以尝试提供一个解决方案。 – wdosanjos

回答

1

下面的查询应提供你在找什么:

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 
+0

这样做。完全旋转在这一个我的轮子。谢谢! –

1

为什么从表中选择常量值cast(round(@divNumber/@DateCount, 1) as decimal(5,1)?这是你的问题的原因。 我不太熟悉sql服务器,但是你可能会尝试只选择没有from子句。

-1
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