谁能解决啊?(50)

  • 主题发起人 主题发起人 huxhang
  • 开始时间 开始时间
H

huxhang

Unregistered / Unconfirmed
GUEST, unregistred user!
谁能解决啊?ADOQ_Temp.sql.text := 'select ' +' sum(数量) as SL_sum_n3 ' +' from ( select top '+ sort_pm +' 数量 from zq0304ies ' + ' where 公司<>"" ' + ' and 公司<>"最高值" and 公司<>"最 高 值" ' + ' and 公司<>"最低值" and 公司<>"最 低 值" ' +' order by 数量 ASC ) ' ; 请问这样的sql有问题吗?为何这个和值有时准确,有时错误,比如 当sort_pm值为3,或5时,和值有时却一样
 
第一名:1 第二名:2 第二名:2 第三名:3 第四名:4 假设要TOP 2 “数量”的和值则为2+2+1=5 第一名:1 第二名:2 第三名:3 第四名:4 假设要TOP 2 “数量”的和值则为2+1=3我的目的只要2+1=3的这种,是并列第二的原因吧?
 
sql语句中有个去掉重复值的参数,你试试。(我也曾出现过这个问题,后用此参数解决了) "DISTINCT "如果有多个记录的选择字段的数据相同,只返回一个。 DISTINCTROW 如果有重复的记录,只返回一个
 
Select Sum(数量) as SL_sum_n3from (Select 数量, (Select count(*) from zq0304ies b where b.数量<=a.数量) x from zq0304ies a )ZWhere x<sort_pm
 
我这样能解决(不是办法的办法,只要id不同绝对可行)ADOQ_Temp.sql.text := 'select ' +' sum(数量) as SL_sum_n3 ' +' from ( select top '+ sort_pm +' 数量 from zq0304ies ' + ' where 公司<>"" ' + ' and 公司<>"最高值" and 公司<>"最 高 值" ' + ' and 公司<>"最低值" and 公司<>"最 低 值" ' +' order by 数量,id, 公司 ASC ) ' ;
 
加个 max(数量) 'select top '+ sort_pm +' max(数量), 其他字段 from zq0304ies group by 其他字段' //其他字段: 跟名次一一对应没试过~试试~~
 
一般情况下建议不要用公司<>""这个,最好改成isnull(公司,'')<>'',同时注意一下重复值!
 
加个表的别名
 

Similar threads

回复
0
查看
848
不得闲
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
后退
顶部