有表如下
期号 第一位 第二为.......................第七位
1      3     4     5     12    6    8      9
2      7     9     7     14    14   10     11
.......
此表是用来显示体育彩票中奖号码的。我想体育彩票大家都玩过把
我的问题是 如何从上表中得到
号码  号码出现数
1        ?     <--要求自动统计出来
2        ?  
3        ?
4        .
5        .
6
7
8
9
10
.
.
.
29       ?
这张表 我想不出来 向各位请教 谢谢

解决方案 »

  1.   

    又个比较笨的办法select( select count(*) from tablename where col1 = 1) as 1,
          ( select count(*) from tablename where col2 = 1) as 2,
          ( select count(*) from tablename where col3 = 1) as 3,
    ...
          ( select count(*) from tablename where col7 = 1) as 7,
    from tablename 
      

  2.   

    不好意思,写错了,改正
    select( select count(*) from tablename where col1 = 1) +
          ( select count(*) from tablename where col2 = 1) +
          ( select count(*) from tablename where col3 = 1) +
    ...
          ( select count(*) from tablename where col7 = 1) as count,
    from tablename
      

  3.   

    先建一整数数组A,用来存储各数字出现的次数,然后对全表数据进行一次扫描,当扫描到1,就A[1]:=A[1]+1,扫描到2,就A[2]:=A[2]+1,……以此类推,扫描完后,数组A[1]中的数字就是数字“1”出现的总次数,数组A[2]中的数字就是数字“2”出现的总次数,……以此类推,然后再处理数组中的数据就行了,可以显示出来或写入表,写入文件都可
      

  4.   

    我用的是Ttable ,不能用sql吧。
      

  5.   

    Ttable ,换把
    Ttable 功能太弱了
    其他跟Ttable 一样,直接把上面大虾的代码写在sql里面就可以了!
    怎么,还不会,干脆考过去算了!
      

  6.   

    用SQL好一点,你的数据量不大,用不着存储过程的,用楼楼楼上的那位的SQL,把你的TTTTTABLE扔垃圾桶里去得了
      

  7.   

    同意mrtxc(阿春) 的做法但你一开始就建的数据库表没用文件存
    建议用存储过程
      

  8.   

    function  Getnum(var str:string ):Tstrings;
         var
          num :Tstrings;
          begin
          str:=trim(str);
          num:=tstringlist.Create;
          while pos(' ',str)>0 do
            begin
            trim(str);
            num.Add(copy(str,1,pos(' ',str)));
            delete(str,1,pos(' ',str));
            pos(' ',str);
            end ;
            num.Add(str);
           Result:=num;
          end;
      

  9.   

    procedure TForm1.Button1Click(Sender: TObject);
     function  Getnum(var str:string ):Tstrings;
         var
          num :Tstrings;
          begin
          str:=trim(str);
          num:=tstringlist.Create;
          while pos(' ',str)>0 do
            begin
            trim(str);
            num.Add(copy(str,1,pos(' ',str)));
            delete(str,1,pos(' ',str));
            pos(' ',str);
            end ;
            num.Add(str);
           Result:=num;
          end;
    var
    txtfile,strl:Tstrings;
    i,ii,iii:integer;
    str:string;
    num:array[0..34] of integer;
    begin
    for I := 0 to 34 do num[I]:=0;
    txtfile:=tstringlist.Create;
    txtfile.LoadFromFile('c:\data.txt');
     for i:=0 to txtfile.Count-1 do
         begin
           str:=txtfile.Strings[i];
           strl:=tstringlist.Create;
           strl:=Getnum(str);
           for ii:=0 to strl.Count-1 do
                begin
           num[strtoint(strl.Strings[ii])-1]:=num[strtoint(strl.Strings[ii])-1]+1;
                end;     end;
     for iii:=0 to 34 do
      showmessage(intostr(iii+1)+'的次数'+inttostr(num[iii]));
    end;