我程式功能為根據客戶提供的近10000條serial_number 值,在sfism4.r_wip_tracking_t 表中查出它的group_name 分布.
表單 sfism4.r_wip_tracking_t 中存在如下字段:
SERIAL_NUMBER LINE_NAME GROUP_NAME MODEL_NAME IN_STATION_TIME KEY_PART_NO
2078864103488 2PCBB MB IBL30LA5 2007/8/1 46145932L05
2079282800891 2PCBF MB IBL80 L04 2007/8/1 46148632L04
2079201201854 2PCBI F/T IAT60 L22 2007/8/1 46147932L22
我用 select group_name ,count(serial_number) from sfism4.r_wip_tracking_t where serial_number
in ('','','',) gruop by group_name
此中因公司只可用PLSQLDEV 工具 來操作DB ,而對此工具,它存在用IN(‘’)語句時查詢紀綠不能超過1000條的限制,
請問:我用何種方法可避開此限制,一次性顯示這10000個SERIAL_NUMBER的GROUP_NAME分布,
望高手相助,完成本人第一枝程式。 急,我今天在線等,,下周就要上產線用了,,兄弟們幫下忙
解决方案 »
- delphi XE中如何单步调试?设置的断点无效。
- 如何根据错误提示找到代码位置?
- 各位大虾帮帮忙!很简单的一个问题!
- 请教一个断承问题
- 老子现在越来越看不惯Delphi版的这个人了!大家进来评理!
- sql语句,往oracle数据库中插入时间数据?
- *******帮忙呀!!有关对话框的简单操作********
- 我用edit.text:=timetostr(now);显示当前时间,可是我想显示到秒。怎样做。thanks
- 有谁做过关于扫描器(Scaner)的程序.象超市用的那种!急在线等!!我的问题是假若用100个数字其中90~100是有问题的,我通过Scan. 如果是有问
- 怎样将报表保存为文件
- 有关DBGridEh显示数据的问题?
- 怎么改变treeview树形控件的某个节点颜色?请各路大侠帮忙?在线等侯....
导入到ListView,然后Sort一下。
导入到ListView,然后Sort一下。?????
請問unsigned :Sort一下是什么東西?
還有請問大虫們:
你們沒使用過PLSQLDEV 操作ORACLE DB不,其select * from table where 字段 in('') group by group_name
這個IN 的數量為1000限制,
我現在查10000個不規則的SERIAL_NMUMBER,的group_name分布如何實現。
這個IN 的數量為1000限制,
我的需求只是查出它的簡單的組別分布情況,order by 就沒有必要了,,
因為是 導入的數據,所以一次性我無法查出,,
而我想通過DELPHI語言或者SQL語句來實現
,,請問unsigned:
join取代in 是不是無限制呢,,
我用UNION方法,因無法確定變量個數,所以不能實現。因為給我的SERIAL_NUMBER可能很大,分為1000個、數賦一個變量有點不現實。
但导到Delphi里的话,用
While Not qu.eof do
begin
//取值
qu.next;//这样是没有1000条限制的。
end;你的Shop floor 系统可能设计的有些问题。
----------------------- [email protected]
While Not qu.eof do
begin
//取值
qu.next;//这样是没有1000条限制的。
end; 你的Shop floor 系统可能设计的有些问题。
dear maming2003:
能否用一個小示例來示范下,,,,我有點不解
While Not qu.eof do 這個QU,,是不是查詢的結果已限制在1000條之內了,,,因我的SERIAL_NUMBER
為不規則的。????
10000多条记录,统计时间要1分钟左右了,不会太长么??
如果是高端点的CPU的话还可以
如果SERIAL_NUMBER不是索引列,那你这张表有索引列么??
你首先建一张表JJ
JJ表有两列,分别是 GROUP_NAME 和 数量 利用指针的方法实现的;
记录第一条记录和第1000记录的索引值,然后每1000条记录统计一次,最后再汇总,这样就实现了注意:
SERIAL_NUMBER必须是唯一的值,不然数据有可能会错!
如果SERIAL_NUMBER不是唯一的值,那就用你那张表的索引列来替换掉下面代码里面的SERIAL_NUMBER列,这样就OK了!'解决了记得送分哦! ^_^procedure TForm1.SpeedButton1Click(Sender: TObject);
var i,j:integer;
var k1,k2:integer;
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('delete JJ');
adoquery1.ExecSQL;adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from sfism4.r_wip_tracking_t order by SERIAL_NUMBER');
adoquery1.Open;
for j:=0 to (adoquery1.RecordCount div 1000) do
begin
k1:=adoquery1.Fields[0].AsInteger;for i:=0 to 998 do
begin
if j=adoquery1.RecordCount div 1000 then
begin
adoquery1.Last;
break;
end;
adoquery1.Next;
end;
k2:=adoquery1.Fields[0].AsInteger;
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add('insert into JJ(GROUP_NAME,数量) select GROUP_NAME,count(SERIAL_NUMBER) as 数量 from');
adoquery2.sql.add('sfism4.r_wip_tracking_t where SERIAL_NUMBER between :A and :B group by GROUP_NAME');
adoquery2.Parameters.ParamByName('A').Value:=k1;
adoquery2.Parameters.ParamByName('B').Value:=k2;
adoquery2.ExecSQL;
adoquery1.Next;
end;adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add('select GROUP_NAME,sum(数量) as 数量 from JJ group by GROUP_NAME');
adoquery2.Open;
end;
比如 in (1,2,....1000) or in (1001,1002,....2000) or in (2001,2002,...3000)....
我自己實現了它的查詢,
現在出現一個新的問題,
我用IN 語句對10000條SERIAL_NUMBER分10部份進行查詢,並分10次賦值到LISTVIEW控件中,而現在我想將相同GROUP_NAME進行漚總。就如EXCEL 的篩遷功能一樣。
我再一次申明因我們公司的部門劃分不一樣,加臨時表的方法是最後的方法,我一般不想使用。因為這涉及到部門會議,以及各種其它方面情況。
dear XavierDelphi :
非常感謝你能供SOURCE CODE
我會為你加分的。
不知你能否為我指明用何控件可實現動態賦值,以及篩遷功能
ADOTable,ADOQuery这类控件有个Filter属性是用于过滤数据集的,有相当与SQL的Where的作用,灵活运用应该可以解决你的问题