站点 时 要素1 要素2
A 20:00 3 4
A 21:00 5 6
A 22:00 7 8
B 20:00 9 10
B 21:00 11 12站点 要素 20:00 21:00 22:00
A 要素1 3 5 7
A 要素2 4 6 8
B 要素1 9 11
B 要素2 10 12 把第一个表转成第二个表的形式
有什么好的方法

解决方案 »

  1.   

    站点 时      要素1 要素2
    A   20:00   3    4
    A   21:00   5    6
    A   22:00   7    8
    B   20:00   9    10
    B   21:00   11   12站点 要素  20:00 21:00 22:00
    A   要素1   3     5     7
    A   要素2   4     6     8
    B   要素1   9     11 
    B   要素2   10    12 
      

  2.   

    关键字: 纵表 横表 oracle sql 
    fname       ftype             fvalue 
    小乔        zaocan              10 
    小乔       zhongcan             20 
    小乔        wancan               5 
    转换后的表结构: 
    fname       zaocan_value          zhongcan_value       wancan_value 
    小乔                  10                                 20                             5 纵表转横表SQL示例: 
    Sql代码 
    select Fname,   
           sum(case Ftype   
                 when 'zaocan' then  
                  Fvalue   
                 else  
                  0   
               end) as zaocan_value,   
           sum(case Ftype   
                 when 'zhongcan' then  
                  Fvalue   
                 else  
                  0   
               end) as zhongcan_value,   
           sum(case Ftype   
                 when 'wancan' then  
                  Fvalue   
                 else  
                  0   
               end) as wancan_value   
      from case_table   
     group by Fname  
      

  3.   

    行列转换的代码。引用别人的。public static void Main()
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("name");
                dt.Columns.Add("type");
                dt.Columns.Add("relt");            for (int i = 0; i < 4; i++)
                {
                    DataRow dr = dt.NewRow();
                    dr["name"] = "name" + i;
                    dr["type"] = "type" + i;
                    dr["relt"] = "relt" + i;                dt.Rows.Add(dr);
                }            DisplayTable(dt);            Console.WriteLine("\r\n =====> 进行行列转换 \r\n");            DisplayTable(ColumnToRow(dt, 0));            Console.ReadLine();
            }        public static DataTable ColumnToRow(DataTable src_dt, int columnIndex) //columnIndex 用来当作新列名的列
            {
                DataTable dt = new DataTable();
                dt.Columns.Add(src_dt.Columns[columnIndex].ColumnName);            foreach (DataRow dr in src_dt.Rows)
                    dt.Columns.Add(dr[columnIndex].ToString());            int n = src_dt.Columns.Count;
                for (int i = 0; i < n; i++)
                {
                    if (i == columnIndex) continue; //如果是被当作列名的列,则跳过                DataRow new_dr = dt.NewRow();
                    string columnName = src_dt.Columns[i].ColumnName;
                    new_dr[0] = columnName;                foreach (DataRow dr in src_dt.Rows)
                    {
                        string newColumnName = dr[columnIndex].ToString();
                        new_dr[newColumnName] = dr[columnName];
                    }                dt.Rows.Add(new_dr);
                }            return dt;
            }