原内容:
fields  ubiaohao jianyandian wucha jielun
        1111111    a600       0.12   T
        1111111    a400       0.32   T
        1111111    a300       0.52   T
        1111111    a200       0.22   T
        1111111    a100      -0.22   T
        1111111    a050       0.72   T
        1111111    a020       0.92   T
        1111112    a600       0.12   T
        1111112    a400       0.32   T
        1111112    a300       0.52   T
        1111112    a200       0.22   T
        1111112    a100      -0.22   T
        1111112    a050       0.72   T
        1111112    a020       0.92   T
         ...        ...        ...   ...
目标:
fields  ubiaohao a600  a400  a300  a200  a100  a050 a020  jielun
        1111111  0.12  0.32  0.52  0.22 -0.22  0.72 0.92    T
        1111112  0.12  0.32  0.52  0.22 -0.22  0.72 0.92    T
         ...
所有的字段都是字符型,其中jianyandian的内容是不定的,但在某个条件下是不变的,请教各位,如何实现动态转换?

解决方案 »

  1.   

    请参看http://expert.csdn.net/Expert/TopicView1.asp?id=1015421
      

  2.   

    假定表名为table1。var
      lsstr,sqlstr:String;分两步。
    第一:取得 jianyandian 不重复值的数组放在一个sql中。
    SELECT distinct jianyandian from table1 order by jianyandian desc
    暂存在一个query控件中,名为sql1。第二:做一循环,但里面的还是有一些问题,条件不知该如何写,请高人继续。
    sqlstr:='select ubiaohao ';
    sql1.frist;
    while not sql1.eof do
      begin
        lsstr:=sql1.fieldbyname('jianyandian').asstring;
        sqlstr:=sqlstr+',wucha as '+jianyandian;
        sql1.next;
      end;
    sqlstr:=sqlstr+',jielun from table1';
      

  3.   

    字段名可根据sql1确定,数据值的填写要写判断语句,头疼中
      

  4.   

    sqlstr:='';
    for i;=0 to sql.recordcount-1 do 
    beginSELECT wucha  as char(a+i) from table1 sqlstr:=sqlstr+'where jianyandian='''+sq1.fieldbyname('jianyandian')+''','end;
    sqlstr:=copy(sqlstr,1,length(sqlstr));
    sqlstr:='select '+sqlstr+' from table'