CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

如何实现这样的交叉表查询

楼主2961(沉然)2003-01-02 10:51:44 在 Delphi / 数据库相关 提问

数据表的结构为:  
   
  公司代码 物品代码 信息1 信息2 日期  
  1     wp1               100         10         2003-1-1  
  1                     wp2               200         20         2003-1-1  
  1                     wp3               300         50         2003-1-1  
  2                     wp1               400         70         2003-1-1  
  2                     wp2               500         90         2003-1-1  
  2                     wp3               600         110       2003-1-2  
  ……  
   
  现在需要形成这样的交叉表结果:  
   
  公司代码 wp1.信息1       wp1.信息2     wp2.信息1     wp2.信息2     wp3.信息1     wp3.信息2   ……  
  1                   汇总结果         汇总结果         汇总结果    汇总结果     汇总结果       汇总结果  
  2                   汇总结果         汇总结果         汇总结果    汇总结果     汇总结果       汇总结果  
   
  需要说明的是:  
  ·对于每个物品,有两个并列的需要汇总的信息  
  ·汇总的结果需要动态参考原表中的日期条件  
  ·物品的种类是未知的,所以不能在数据库中预先定义临时表  
   
   
  我使用的是access表  
  若对一种物品信息汇总,可以简单的建立交叉表实现  
  我也可以对这两的汇总信息分别建立交叉表,然后将两个交叉表结果根据公司代码再联成一个查询  
  请问有没有简单的方法,可以一次建成呢?  
   
  另:  
  关于日期查询条件,如何在access中的交叉表中为某字段设一个查询条件参数呢?  
   
  我用Delphi可以在前端用动态语句形成交叉表,但我只会对一种汇总信息进行交叉查询的语句。而两个在前端形成的临时交叉查询,如何将之联在一起呢?  
  问题点数:100、回复次数:9Top

1 楼qi_gu(苦瓜)回复于 2003-01-02 16:54:19 得分 10

你说的太抽象了,其实你想做的大概就是对不同的信息进行汇总,而这些信息你可以自己定义,是吗,在动态生成group   by   相关的sql语句,注意,select   部分和group   by   部分要一致.这大概是最简单的做法了.Top

2 楼jaguarcts(xzh2000)回复于 2003-01-02 19:24:24 得分 0

upTop

3 楼leaya11(lee)回复于 2003-01-02 20:28:08 得分 60

我比较笨!建一个临时表,用算法填充,我以前做过一个。但把ASSCE的最大字段数用过了,256个。唉,我的SQL比较差。最大字段数,你要小心呀!Top

4 楼yekehe(河子)回复于 2003-01-02 20:32:03 得分 10

select   公司代码,物品代码,sum(信息1),sum(信息2)   from   table  
  where   .......  
  group   by   公司代码,物品代码Top

5 楼simonzone(马叉虫)回复于 2003-01-02 20:34:24 得分 10

我觉得可以这样:  
  select    
    公司代码,  
    sum(   case   物料代码     when   wp1   then   信息1   else   null   end)   as   wp1.信息1,  
    sum(   case   物料代码     when   wp1   then   信息2   else   null   end)   as   wp1.信息2,  
    sum(   case   物料代码     when   wp2   then   信息1   else   null   end)   as   wp2.信息1,  
    sum(   case   物料代码     when   wp2   then   信息2   else   null   end)   as   wp2.信息2,  
    .......  
  from   yourtablename  
  groub   by   公司代码  
  order   by   公司代码  
  Top

6 楼kaidu(Roger)回复于 2003-01-02 20:44:34 得分 0

upTop

7 楼tfxg()回复于 2003-01-03 09:13:30 得分 10

select   公司代码,物品代码,sum(信息1),sum(信息2)   from   table  
  where   .......  
  group   by   公司代码,物品代码  
  这样写差不多了。Top

8 楼2961(沉然)回复于 2003-01-06 15:51:25 得分 0

谢谢   leaya11(lee)   的提醒。  
  我用sql语句先求出了汇总结果,用了临时表暂时解决了这个问题。Top

9 楼go1go(my fly)回复于 2003-04-11 19:51:03 得分 0

如下(score_info):  
  原表:xh       xm       kcmc       kscj  
              1       fgl       yw           45  
              1       fgl       sx           78  
              2       ykw       yw           54  
              2       ykw       sx           98  
  显示成  
              xh     xm         yw           sx       总分  
              1       fgl       45           78       123  
              2       ykw       54           98       152  
  在access2000是,可用sql   实现:transform   sum(kscj)as   总分   select   xh,xm   from   score_info   group   by   xh,xm   pivot   kcmc  
  可是用sql2000时,就不能,急!!!  
  并且课程名称是动态选择的Top

相关问题

  • 如何用SQL实现交叉表查询?
  • 在Delphi中如何用SQL实现交叉表查询?
  • 如何实现这样的交叉表查询
  • 求教:如何实现交叉表
  • 这样的交叉表如何实现!!!
  • 交叉表查询
  • 通过交叉表查询获得的记录集,如何实现更新物理表?
  • Sql Server 中如何创建交叉表查询?
  • 特急求救,如何进行交叉表的查询?
  • 请问如何做交叉表查询(TRANSFORM)?

关键词

  • 代码
  • 物品
  • 信息
  • 语句
  • 查询
  • 交叉表
  • wp
  • 汇总结果汇总结果
  • fgl
  • ykw

得分解答快速导航

  • 帖主:2961
  • qi_gu
  • leaya11
  • yekehe
  • simonzone
  • tfxg

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

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