欢迎来到天天文库
浏览记录
ID:20390484
大小:35.00 KB
页数:3页
时间:2018-10-13
《如何实现行列转换》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、如何实现行列的转换?有关交叉表的应用作者:cg1摘自:access911.net编辑:cg1专题地址:http://access911.net/?kbid;72FAB01E16DCE8F3简述:如何实现行列的转换?有关交叉表的应用《查询》阅读前需掌握:熟练掌握JETSQL难度等级:我有如下这样一个格式的表:格式1列1列2名字1名字2第二列名字1第二列名字2名字1,名字2都是有顺序的,是一个名次排列,我如何将第二列的名字1排列到第一列的名字1后面呢?要加一个名次字段,然后将表格从格式2名次列1列21名字12名字21第二列名字12第二列名字2的格式排列为格式3名次列名字11名字121名字212第二
2、列名字122第二列名字2的表格,然后用交叉表查询向导生成一个交叉表查询,代码如下:TRANSFORMFirst(表2.名字)AS名字之第一条记录SELECT表2.名次FROM表2GROUPBY表2.名次PIVOT表2.列;即可,排列完成后就是以下格式:格式4名次121名字1第二列名字12名字2第二列名字2有人提问,如果我直接拿到的就是上述格式4,如何转换为格式3那样呢?直接用UNIONALL就可以实现了select名次,"1"as列,[1]fromtableunionallselect名次,"2"as列,[2]fromtable注意,现在有一些网友用SUM加IIF函数去实现交叉,access9
3、11强烈建议不要这样做,因为这样每条记录都需要去判断,效率极差。当然,同样的原理也适用SQLSERVER中用SUM加CASEWHEN的方法,但是SQLSERVER稍有不同,因为SQLSERVER对此优化比较好,速度不是很慢。问题:原数据表T(字段1)A(字段2)B(字段3)C(字段4)D(字段5)1A1B1C1D12A2B2C2D23A3B3C3D3新数据表T(字段1)M(字段2)N(字段3)1AA11BB11CC11DD12AA22BB22CC22DD23AA33BB33CC33DD3如何能把第一个表转换成第二个表!?回答:看最后一句SQL代码,就是用UNIONALL来转换的
此文档下载收益归作者所有