CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

请问这样的查询如何实现?

楼主proton0012004()2006-11-03 17:23:01 在 MS-SQL Server / 基础类 提问

从下表中算出数据结果来,下表表名为“交叉表结果”  
   
  货号         出货价格         20060214         20060215         20060216  
  1000021       0.613                                                                                 6756  
  1000021       0.612                                                                                 5912                         4321  
  1000021       0.611                                                                                 37628                     2315  
  1000021       0.61                                                                                     7928                         3428  
  1000021       0.609                               3494                                   9990                         6790  
  1000021       0.608                               17181                               4366  
  1000021       0.607                               9958                                   2066  
  1000021       0.606                               935  
  1000021       0.605                               859  
  1000021       0.601  
  1000022       1.3                                                                                       457  
  1000022       1.299                                                                               887                                 865  
  1000022       1.298                                                                               1332  
  1000022       1.297                             540                                       607                               1756  
  1000022       1.296                             607                                       1043                           976  
  1000022       1.295                             1280                                   2231                           735  
  1000022       1.293                             976                                       900  
  1000022       1.291                             507  
  1000022       1.29                                 420  
  1000022       1.289  
   
   
  要实现的查询结果是:  
   
  货号           20060214                     20060215             20060216          
  000021                     a1                                                 b1                                       c1  
  000022                     a2                                                 b2                                       c2  
  000023                     a3                                                 b3                                       c3  
   
  其中20060214列的数据我能这样算出来:  
   
  SELECT   货号,   (MAX(出货价格)   -   MIN(出货价格)+(case   left("货号",1)   when   1   then   0.001   else   0.01   end))   /   SUM([20060214])    
              AS   '20060214'    
  FROM   dbo.交叉表结果  
  WHERE   [20060214]   IS   NOT   NULL  
  GROUP   BY   货号  
  ORDER   BY   货号  
   
   
  现在请教各位,怎样得到一张表中能包含很多列的数据(比如象示例表一样,含有20060215、20060216、20060217·····等等)  
  急!  
  谢谢高人指点!bow! 问题点数:20、回复次数:3Top

1 楼churchatp1(别看资料,看聊效!)回复于 2006-11-03 17:39:17 得分 0

如果你的列命名是没有什么规则的,你说的是做不到的  
  如果你的列命名是有规则的都类似20060216这样的,那样你可以借用系统表,找到你需要的列,是可以做到你需要的效果的Top

2 楼proton0012004()回复于 2006-11-04 08:47:31 得分 0

俺是菜菜,不太清楚你所说的“借用系统表”,烦请详述之。  
  另,列名的命名规则是按日期来的,但不是每天都有销售数据,所以有时又会有几天是空的。Top

3 楼proton0012004()回复于 2006-11-04 10:51:43 得分 0

有否办法设计一个自定义函数来实现呢?  
  或者,借助临时表有没办法实现呢,请高人帮我看看。Top

相关问题

关键词

得分解答快速导航

  • 帖主:proton0012004

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo