资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 软件开发 >
Advertisement
文章正文

怎么用语句(sql)实现这个功能啊

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   

如下图表记录:  
    张三 语文 39  
    张三 数学 99  
    张三 英语 88  
    李三 语文 69  
    李三 数学 77  
    李三 英语 88  
  变成下面的:  
   
     语文  数学   英语  
  张三 39   99    88  
  李三 69   77    88  
   
   
  急,在线等,谢谢

网友回答:

发表者:dlpseeyou

declare   @sql   varchar(8000)  
  set   @sql=select   姓名,  
  select   @sql=@sql+sum(case   fields   when   +fields   +   then   fields   else   0   end)   as   +fields   +,from   (select   distinct   fields   from   表)   as   a  
  select   @sql=@sql+"   group   by   姓名"  
  exec(@sql)

发表者:apple800

参考:  
  有一個表T2,它的內容如下  
  P1     MOUNT  
  a1       30  
  a1       40  
  a1       50  
  a1       60  
  如何用SQL把它變成下面的結果:  
  a1   30   40   50   60  
  --*/  
  declare   @s   varchar(8000)  
  set   @s=  
  select   @s=@s+,+cast(MOUNT   as   varchar)   from   t2  
  exec(select   a1+@s)  
   
 

发表者:yjdn

select   姓名,语文=sum(case   when   科目=语文   then   分数   else   0   end),  
  数学=sum(case   when   科目=数学   then   分数   else   0   end),  
  英语=sum(case   when   科目=英语   then   分数   else   0   end)  
  from   表名   group   by   姓名

发表者:yjdn

--补充上面:我的测试用表是这个:  
  create   table   tn(姓名   varchar(20),科目   varchar(20),分数   int)  
   
  --如果你的科目很多,那就得用动态SQL语句来执行,  
  declare   @sql   varchar(8000)  
  set   @sql=  
  select   @sql=@sql+,sum(case     when   科目=+科目+   then   分数   else   0   end)   as   [+科目+]    
  from   tn    
  group   by   科目  
   
  exec(select   姓名+@sql+   from   tn   group   by   姓名)

发表者:chj733

*/  
  --建立表格  
  create   table   chengji  
  (name   varchar(15)   null,  
  kemu   varchar(15)   null,  
  marks   int   null)  
   
  --测试数据  
  insert   into   chengji   values  
    (张三,语文,39)  
  insert   into   chengji   values  
    (张三,数学,99)  
  insert   into   chengji   values  
    (张三,英语,88)  
  insert   into   chengji   values  
    (李三,语文,69)  
  insert   into   chengji   values  
    (李三,数学,72)  
  insert   into   chengji   values  
  (李三,英语,23)  
   
  --生成科目数据字典,因为不知道到底有多少科目  
  select   distinct   kemu   into   #temp   from   chengji  
   
  --根据数据字典生成动态SQL  
  declare   @sql   varchar(8000)  
  set   @sql=select   name,  
  select   @sql=@sql+     +   kemu   +     =   +   sum(case   kemu   when   +kemu   +   then   marks   else   0   end),  
  from   #temp  
   
  --处理@sql字符串  
  select   @sql=substring(@sql,1,len(@sql)   -   1)+from   chengji   group   by   name  
   
  --执行  
  exec(@sql)  
   
  /*结果  
  ---------------------------  
  name       数学         英语         语文  
  李三 72 23 69  
  张三 99 88 39  
  */  
 


 

 
热门推荐笔记本: 索尼笔记本
相关文章:
webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
©2007 popbb.net All Rights Reserved