SQL Server 表交叉显示及实现方法

时间:2016.05.08 发布人:kingsygh

SQL Server 表交叉显示及实现方法

已解决问题

谷歌kingsygh用户在2016.05.08提交了关于“地下城与勇士SQL Server 表交叉显示及实现方法”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-02-27T20:50:19。希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,希望你能感受到,我最真诚的谢意 !

希望以下的回答,能够帮助你。

第1个回答

用户名:hucangfu1974  

  假设有张学生成绩表(t)如下:

  Nam来自eSubjectResult

  张三语文  73

  张三数学  83

  张三物理  93

  李四语文  74

  李四数学  84

  李四物理  94

  想变成

  姓名语文数学物

  张三73  83  93

  李四74  84  94

  代码

  createtable#t

 守末卷农族可西孔 (

  Nameva向比帮引我rchar(10),

  Subjectvarchar(10),

  Resultint

  )

  insertinto#t(Name,Subject,Result)values('张三','语文','73')

  insertinto#t(Name,Subject,Result)values('张三','数学','83')

  insertinto#t(Name,Subject,Result)values('张三','物理','93')

  insertinto#t(Name,Subject,Result)values('李四','语文','74')

  insertinto#t(Name,问答Subject,Result)values('李四','数学','83')

  insertinto#t(Name,Subject,Result)values('李四','物理','93')

  de谓游简乎突序独朝方clare@sqlvarchar(8000)

  set@sql='selectNameas姓名'

  select@sql=友十伤东@sql+',sum(caseSubjectwhen'''+纸南沉Subject+'''thenResultend)['+Subject+']'

  from(selectdistinctSubjectfrom#t)asa

  set@s血面ql=@sql+'from#tgroupbyname'

  exec(@sq准假肉甲连汉绝常却既家l)

  droptable#t

  --结果

  姓名数学物理语文

  -------------------------------------------

  李四839374

  张三839373

  如果上述两表互相换一下:即

  姓名语文数学物理

  张三73  耐即席存尽只字器汉顶83  93

  李四74  限蛋外志游84  94

  想变成

 气散造鲁庆 NameSubjectResult

  张三语文  73

  张三数学  83

  张三物理  9背充游速根洋3

  李四语文  74

  李四数学  84

  李四物理  94

  代

  createtable#t

  (

  姓名varchar(10),

  语文int,

  数学int,

  物理int

  )

  insertinto#t(姓名,语文,数学,物理)values('张三',73,83,93)

  insertinto#t(姓名,语文,数学,物理)values('李四',74,84,94)

  select姓名asName,'语文'asSubject,语文asResultfrom#tunion

  sele上ct姓名asName,'数学'asSubject,数学asResultfrom#tu预耐毫玉去争了副飞nion

  select姓名asName,'物理果掉留'asSubject,物理asResultfrom#t

  orderby姓名desc

 七兵批乱章低克径是 droptable#t

  NameSubjectResult

  ---------------船例位命准--------真动整迫右-----

  张三数学83

  张三物理93

  张三语文73

  李四数学84

  李四物理94

  李四语文74

  (所影响的行数为6行)