以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- 如何实现excel透视表的功能,即纵向转化为横向显示 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=131152)
|
-- 作者:happyft
-- 发布时间:2019/2/18 23:05:00
-- 如何实现excel透视表的功能,即纵向转化为横向显示
此主题相关图片如下:tim截图20190218230022-1.jpg
此主题相关图片如下:tim截图20190218230022-2.jpg
如上两图,如何简单实现将上图的纵向显示变成下面的横向显示?用sql的PIVOT运算符可以实现吗?
谢谢!
|
-- 作者:有点蓝
-- 发布时间:2019/2/18 23:19:00
--
不就是交叉统计吗
|
-- 作者:HappyFt
-- 发布时间:2019/2/19 11:12:00
--
此主题相关图片如下:tim截图20190218230022-3.jpg
Dim b As New SQLCrossTableBuilder("统计表1","计划订单") b.ConnectionName = Mydata b.HGroups.AddDef("品名") \'添加客户列用于水平分组 b.HGroups.AddDef("子件") \'添加客户列用于水平分组 b.VGroups.AddDef("到期日",DateGroupEnum.Month,"{}月") b.VGroups.AddDef("到期日",DateGroupEnum.Day,"{}日") \'添加产品列用于垂直分组,并设置了Pattern参数 b.Totals.AddDef("毛需求量") \'添加数量列用于统计 \' b.Build \'生成统计表 tbl.DataSource = b.BuildDataSource
如果上面月份2那里要显示为2019年2月,红色那里要怎么改?还有3月那里为何显示错误, 谢谢!
|
-- 作者:有点蓝
-- 发布时间:2019/2/19 11:23:00
--
用SQLCrossTableBuilder才有"{}月"这种用法
可以向VGroups增加表达式分组列,语法为: VGroups.AddExp(Name, Expression) VGroups.AddExp(Name, Expression,Pattern) 参数说明: Name: 字符型,指定列名。 Expression:字符型,指定表达式。 Pattern: 指定生成标题的模式,用字符"{0}"表示分组值;假定分组值是10,模式是"第{0}周",生成的分组标题将是"第10周"
|
-- 作者:HappyFt
-- 发布时间:2019/2/19 13:56:00
--
可以了,谢谢!另外想问下 表达式列与普通统计列好象不能混用,如 b.VGroups.AddExp("月","Month(到期日)","{0}月") b.VGroups.AddDef("到期日",DateGroupEnum.Day,"{0}日") 这样混用标题上月就会显示在日的下面,而且不能合并, 还有想将月那里显示为2019年2月不可以,会出错,只能显示为2月,如果想显示年,必须要再增加年的统计列 b.VGroups.AddExp("月","Year(到期日) & "-年" & Month(到期日)","{0}月") 这样写会出错
|
-- 作者:有点蓝
-- 发布时间:2019/2/19 14:28:00
--
b.VGroups.AddExp("月","Year(到期日) + \'年\' + Month(到期日)","{0}月")
|
-- 作者:HappyFt
-- 发布时间:2019/2/19 15:28:00
--
那如果是SQLCrossTableBuilder Dim b As New SQLCrossTableBuilder("统计表1","计划订单") b.VGroups.AddDef("到期日",DateGroupEnum.Year & "年" & DateGroupEnum.Month,"{0}月") 红色的那应该如何写?
|
-- 作者:有点蓝
-- 发布时间:2019/2/19 15:48:00
--
没有这种用法,只能用表达式模式
|
-- 作者:HappyFt
-- 发布时间:2019/2/22 11:37:00
--
此主题相关图片如下:tim截图20190222113647.jpg
对于要从多个表中查询合并数据再来交叉统计,上面的sql语句要拼写很多行,还有如果变动每次都要更新,就想直接在sql中通过执行储存过程来实现,然后绑定表就行, 这样修改可以直接后台修改就生效
比如 "SELECT 产品编码,交货日期,SUM(数量) AS 需求数量 FROM 订单明细 GROUP BY 产品编码,交货日期" 这个查询得到的数据用sql查询要转换为按产品编码水平分组,交货日期为垂直分组
这个sql语句应该怎么写?
谢谢!
|