表如下
id  name xl1   张山  21
2   李四  34
3   王五  34
实现的表格为id        1      2     3    
name      张山 李四  王五
xl        21     34   34
这样的sql怎么写,请各位大侠帮忙

解决方案 »

  1.   

    1.假设原有字段id类型为Int,Name为varchar类型。
      则你变换后的表第一行为Int,第二行为varchar,以此类推。
      而SQL表结构一列的类型应该是统一的,因此无法达到2.退一步讲,即使你全部设为字符型字段
      一张表最多可以拥有1024个字段,即你原表只能有1024行数据
      1024行数据,能干什么??
      

  2.   

    LouisXIV(夜游神) 说得对啊,楼主的要求太奇怪了,行转列是可以的,可是楼主这种情况...
    一列的类型应该一样啊
      

  3.   

    //*****只有在web表示层可能实现你需要的效果。
      

  4.   

    要显示的话,可以把用循环语句把数据取出来放入数组中,如:
    生成的2个数组为String name[],int age[].
    然后把他们放入对应的表格就行,用循环语句很容易的。
    如在网页上显示可写为(JSP):
    <table name="test" width="100%">
    <tr>
    <td>姓名:</td>
    <%
        for(int i=0;i<name.length;i++)
        {
           out.print("<td>"+name[i]+"</td>");
        }
    %>
    </tr>
        for(int i=0;i<age.length;i++)
        {
           out.print("<td>"+age[i]+"</td>");
        }
    <tr>
    <td>年龄:</td>
    </tr>
    </table>未经过测试,可能有手误。
      

  5.   

    汗,写错了。
    应该是:
    如在网页上显示可写为(JSP):
    <table name="test" width="100%">
    <tr>
    <td>姓名:</td>
    <%
        for(int i=0;i<name.length;i++)
        {
           out.print("<td>"+name[i]+"</td>");
        }
    %>
    </tr>
        
    <tr>
    <td>年龄:</td>
    <%  for(int i=0;i<age.length;i++)
        {
           out.print("<td>"+age[i]+"</td>");
        }
    %>
    </tr>
    </table>未经过测试,可能有手误。
      

  6.   

    只是显示倒还可以,参考这个,不过对我来说真的很难:)
    http://www.faq-it.org/archives/mssql/5427269fa2f6c2f7ea6a0fcee7a4eb32.php
      

  7.   

    CREATE TABLE T
    (
        [id] int,
        [name] varchar(10),
         xl   int  
    )INSERT INTO T
    SELECT 1,'张三',21 UNION ALL
    SELECT 2,'李四',34 UNION ALL
    SELECT 3,'王五',34SELECT * FROM Tdeclare  @s1  varchar(8000),@s2  varchar(8000)  
               ,@s3  varchar(8000),@s5  varchar(8000)  
               ,@i  varchar(10)  
    select  @s1='',@s2='',@s3='',@s5='',@i='0'  
    select  @s1=@s1+',@'+@i+'  varchar(8000)'  
               ,@s2=@s2+',@'+@i+'=''id='''''+name+''''''''  
               ,@s3=@s3+'  
    select  @'+@i+'=@'+@i+'+'',[''+cast(id  as  varchar)+'']=''''''+cast(['+name+']  as  varchar)+''''''''  from  T'  
               ,@s5=@s5+'+''  union  all  select  ''+@'+@i  
               ,@i=cast(@i  as  int)+1  
    from  syscolumns    
    where  object_id('T')=id  
    order  by  colid  
    select  @s1=substring(@s1,2,8000)  
               ,@s2=substring(@s2,2,8000)  
               ,@s5=substring(@s5,15,8000)  
    exec('declare  '+@s1+'  
    select  '+@s2+@s3+'  
    exec('''+@s5+')')