Office中国论坛/Access中国论坛

标题: 请教交叉表数据显示(谢谢) [打印本页]

作者: lemonday    时间: 2011-6-3 07:39
标题: 请教交叉表数据显示(谢谢)
各位好,现在有一个问题问大家,希望大家帮忙,谢谢
产品表
品牌     产品编号     价格
A           001             10
A           002             20
A           003             30
B           004             40
B           005             50
C           006             60
C           007             70
需要得到如下结果
A产品编号   A价格       B产品编号    B价格        C产品编号     C价格
001             10             004             40             006             60
002             20             005             50             007             70
003             30



作者: roych    时间: 2011-6-3 09:30
除非拆分成三个查询再处理,或者编写代码,否则是不可能实现两个相互交叉的列标题的。权衡之下,我觉得这样应该算是一个不错的选择:
TRANSFORM Max(表1.价格) AS 价格
SELECT 表1.产品编号
FROM 表1
GROUP BY 表1.产品编号
PIVOT 表1.品牌;

效果如下:

[attach]45772[/attach]

作者: lemonday    时间: 2011-6-3 10:42
拆分成三个查询应该怎么来处理呢? 希望给予解答,谢谢
作者: roych    时间: 2011-6-3 11:42
噢。用联合查询也可以,但是Access不是这么玩的~~~这毕竟跟Excel是有区别的。
  1. SELECT 产品编号 AS A产品编号, 价格 As A价格,"" as B产品编号, "" as B价格,"" as C产品编号, "" as C价格 FROM 表1 where 品牌="A"
  2. union all SELECT "" AS A产品编号, "" As A价格,产品编号 as B产品编号, 价格 as B价格,"" as C产品编号, "" as C价格 FROM 表1 where 品牌="B"
  3. UNION ALL SELECT "" AS A产品编号, "" As A价格,"" as B产品编号, "" as B价格,产品编号 as C产品编号, 价格 as C价格 FROM 表1 where 品牌="C";
复制代码
当产品越来越多的时候,存在两个问题:
1、SQL查询语句过于复杂(字符数有限制滴)以致无法运行。
2、列标题超过255,无法在查询中显示。
算了,还是看附件吧。
[attach]45774[/attach]

作者: lemonday    时间: 2011-6-3 23:19
回复 roych 的帖子

虽然没有达到最终想要的效果,但依然很感谢roych版主




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