日期:2014-05-18  浏览次数:20487 次

求和排序输出列名,用VC和数据库实现?
有N个商品,有四个指标,
name       criteria1         criteria2       criteria3     criteria4
----------------------------------------------------
货1           107                   10                         0.4               3
货2           306                   8                           0.2               7
货3           553                     6                         0.7               6
……
货N           644                     7                         0.5               9

每一列的criteria属于一个指标,而criteria1占权重0.3,criteria2是0.4,criteria3是0.1,criteria4是0.2。
现在要将每列得出一个分别取和,然后用每列的N列数值去除各自列的和得到每个货物的在每个criteria下的归一值,然后四列的归一值分别乘以它们各自的权重,再求和,得到每个货品的最终的数值。如此将这个数值进行排序,利用C++语言中的循环语句来使得输出前几个货物名称,它们的数值相加大于20%(占总数的20%)。

其实就是个求和排序再求和的过程,但是不知道其中的实现步骤,即
1)是可以利用现有的SQL   server   2000里面的表格经过怎么样的设置,使得直接计算出一列然后传递到VC中的C++语言中去使用?
还是
2)直接利用VC中的编程输入计算语言,来得到输出结果?
请高手帮助
谢谢


------解决方案--------------------
虽然楼主说的不很清楚,但是个人认为可以不必借助客户端语言就可以排序和筛选

------解决方案--------------------
笔误

CREATE PROCEDURE cx as
begin
declare @s1 int,@s2 int ,@s3 int ,@s4 int,@minrate int
select @s1=sum(criteria1),@s2=sum(criteria2),@s3=sum(criteria3),@s4=sum(criteria4) from tab
select identity(int, 1,1) as id,name, total=criteria1/@s1*0.3+criteria2/@s2*0.4+criteria3/@s3*01+criteria4/@4*0.2 into #temp from tab order by total desc
select name,total,t_t=(selecl sum(total) from #temp where id <=a.id ) into #temp2 from #temp a order by id
select @minrate=min(t_t) from #temp2 where t_t> =0.2
select name,total from #temp2 where t_t <=@minrate
end
go

exec dbo.cx