Office中国论坛/Access中国论坛

标题: 交叉表中如何制作动态列! [打印本页]

作者: 神龙飞舞    时间: 2005-8-20 21:44
标题: 交叉表中如何制作动态列!
同标题!~~~~~~~~~~~~

用搜索没有搜到满意的答案,在OFFICE中国搜到寻欢兄相关帖子。

但是是SQL SERVER2000的,对于我使用的ACCESS没有用处呀~。

希望知悉的朋友帮忙~~~~~~~~~~~~

附加条件,还要进行 行汇总运算。
作者: 静儿    时间: 2005-8-20 22:14
交叉表做出来的本来就是动态的列啊,也有行合计。用查询向导就行!
作者: 神龙飞舞    时间: 2005-8-20 22:39
NO,呵呵,不是的,是固定的列啦。不信你试试。
作者: xinbao    时间: 2005-8-21 00:50
Access只能放足够的文本框作数据表用,Access无法动态产生控件

用足够文本栏,不用的文本框隐藏.
作者: hi-wzj    时间: 2005-8-21 03:29
您指的动态列是什么意思?最好放个实例上来
作者: qxqjdy    时间: 2005-8-21 04:31
我想楼主的意思是想做把基于交叉查询的报表做成动态的吧。
作者: 红寺    时间: 2005-8-21 05:43
楼主的意思我明白,没有很好的解决方法,XINBAO提出的是现在最接近的方法了
作者: 神龙飞舞    时间: 2006-3-21 23:59
呵呵,这个问题我到现在也搞不清楚该如何解决,所以现在来顶帖.

再复述一下意思:

就是在交叉表中能够设置固定的列,如果没有这个列时仍生成这个列不过里面的值可显示为零或相应字符串!

例如:

表中的数据为

姓名  科目   分数

001   语文   80

001   数学   95

001   物理   92

那么,以姓名为行,科目为列,分数为值.则交叉表为.

姓名    语文    数学    物理

001     80        95     92

但是,如果是这种情况的,如下:

姓名  科目   分数

001   语文   80

001   数学   95

要做出如下交叉表效果:

姓名    语文    数学    物理

001     80        95     0

这种就是最大的问题.一般情况下,物理这一列标是不会出现的.呵呵,我就是想让物理这一列标出现.

不晓得这回表达清楚了没.
作者: wwwwa    时间: 2006-3-22 00:34
1、transform sum(分数)
select 姓名 from b102c group by 姓名  
pivot 科目 in('语文','数学','物理')
2、select 姓名,sum(iif(科目='语文',分数,0)), sum(iif(科目='数学',分数,0)),sum(iif(科目='物理',分数,0)),from b102c group by 姓名  

3、动态生成SQL语句。

作者: wwwwa    时间: 2006-3-22 16:14
如不能确定有多少课程的话,可以用OPENRECORDSET(‘SELECT 课程 FROM TT GROUP BY 课程’),对这个记录集循环,动态生成‘SUM(IIF)SQL’语句,再执行即可。
作者: mxl11    时间: 2006-3-22 19:41
不错,特别是第二条很实用,受益非浅。THK




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3