SELECT 名称, 
    (CASE 月份 WHEN 1月 THEN 值 ELSE 0 END) AS 1月,
    (CASE 月份 WHEN 2月 THEN 值 ELSE 0 END) AS 2月,
    (CASE 月份 WHEN 3月 THEN 值 ELSE 0 END) AS 3月,
    FROM 表名

解决方案 »

  1.   

    var
       BH,MC,SJ:string;
       i,IValue:integer;
       temp:string;
    begin
        table1.open;
        talbe2.open;
        for i:=0 to Table1.RecordCount-1 do
        begin
            BH:=Table1.FieldByName('编号').asstring;
            MC:=Table1.FieldByName('名称').asstring;
            SJ:=Table1.FieldByName('时间').asstring;
            IValue:=Table1.FieldByName('值').asinteger;
            with Table2 do
            begin
                append;
                FieldByName('编号').asstring:=BH;
                FieldByName('名称').asstring:=MC;
                for i:=2 to table2.FieldCount-2 do
                begin
                   Temp:=table[i].Name;
                   if sj=Temp then
                       FieldByName(Temp).asinteger:=Ivalue;
                   end;
                end;
                post;
            end;
            Table1.next;
         end;
    end;
                
         
      

  2.   

    不好意思
                for i:=2 to table2.FieldCount-2 do
    应该是j:=2
      

  3.   

    你在程序中控制代码呀,
    最重要的就是:
    (CASE 月份 WHEN X月 THEN 值 ELSE 0 END) AS X月,
      

  4.   

    首先,用select distinct 月份 from 表名 where <条件> order by  月份
    然后用找出的月份一个一个加在下面的[X月]当中呀。
    SELECT 名称, 
        (CASE 月份 WHEN 1月 THEN 值 ELSE 0 END) AS 1月,
        (CASE 月份 WHEN 2月 THEN 值 ELSE 0 END) AS 2月,
        (CASE 月份 WHEN 3月 THEN 值 ELSE 0 END) AS 3月,
        FROM 表名