小弟在论坛里看到一个很好的sql语句,但有一问题不明,就是在select语句里“[列名]”的详细含义,我找了sql资料只看到对“[]”的描述是通配符,但在这里肯定不是,请哪位大虾帮忙解释下,谢了!以下是转贴的语句:
SQL语句之普通行列转换 
假设有张学生成绩表(tb_rowtocol)如下
Name Subject Result
张三 语文  73
张三 数学  83
张三 物理  93
李四 语文  74
李四 数学  84
李四 物理  94想变成 
姓名 语文 数学 物理
张三 73  83  93
李四 74  84  94declare @sql varchar(4000)
set @sql = 'select Name as ' + '姓名'
select @sql = @sql + ' , sum(case Subject when '''+Subject+''' then Result end) ['+Subject+']'
from (select distinct Subject from rowtocol) as a
set @sql = @sql + ' from rowtocol group by name'
exec(@sql) 

解决方案 »

  1.   

    有的特殊符号需要用,不然sql不认识
    如这样的列名[中国+世界]或数字[1]这样的列名
      

  2.   

    比如date,money等,加上[]才可以使用.
      

  3.   

    定界标识符, 作用与" 一样, 表示内部是一个object
    比如你要给一个列命名为 student name, 中间含了空格,用了定界标识符后,SQL知道这是一个OBJECT.
    '为字串定界符.
      

  4.   

    也就有所有的列名都可以加,有的不加SQL不认识,有的加与不加SQL都认识