如何用一条sql语句实现数据分列

mengfriendship 2008-01-31 09:32:53
比如说资产负债表
资 产 年初数 期末数 负债及所有者权益 年初数 期末数
流动资产 流动负债:
货币资金 短期借款

它们在数据库中只存储一列,而且是顺序存储,能不能用一条sql语句直接实现分列显示。也就是数据集的折叠。
希望各位大侠们能伸出你们的援助之手,帮我这个菜鸟一下,谢谢了·
...全文
1308 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
mengfriendship 2008-02-19
  • 打赏
  • 举报
回复
楼上很强,分数给你了
DragonBill 2008-01-31
  • 打赏
  • 举报
回复
呃~~~~我的意思是你给个测试的表, 表中呢加点测试的数据. 我呢, 就不用建表啊/加数据什么的了, 嫌麻烦, 就直接用你给的Demo写SQL
mengfriendship 2008-01-31
  • 打赏
  • 举报
回复
不好意思我的语言表达能力一向不强。
我用一个表(zcfz_struct)存它的结构,另一个表(zcfz_field)存它的字段:年初数,期末数
资产负债表格式如下:
http://www.ahhn-l-tax.gov.cn/tutu/xls/caiwu/3.xls
可以清楚看到它是分两列显示,实现了数据集的折叠。
DragonBill 2008-01-31
  • 打赏
  • 举报
回复
DragonBill回复的原文: 不想自己造数据, 方便的话给个测试数据我帮你写写看


版主说明:
这里是讨论技术的地方,大家一起讨论都会有提高,请勿灌水,谢谢。
DragonBill 2008-01-31
  • 打赏
  • 举报
回复
思路是self join+decode
mengfriendship 2008-01-31
  • 打赏
  • 举报
回复
不是行转列,是比如说一列的数据分两列显示,这一列得数据可能很多,不能逐个用decode语句判断
资 产 年初数 期末数
流动资产
货币资金 1
交易性金融资产 3
应收票据 4
应收账款 6
预付账款 8
应收利息 9
应收股利 10
其他应收款 11

但是显示是我让它分两列显示,能不能用一句sql语言实现如下
资 产 年初数 期末数 资 产 年初数 期末数
货币资金 1 1 预付账款 8 1
交易性金融资产 3 2 应收利息 9 2
应收票据 4 3 应收股利 10 3
应收账款 6 4 其他应收款 11 4

其实我也不知道能不能实现,只不过我觉得sql语言太强大了,想试一试。



HelloWorld_001 2008-01-31
  • 打赏
  • 举报
回复
行转列吗?
假设数据如下
a b
流动资产 1
流动负债: 2
货币资金 3

大致sql如下
select sum(decode(a,'流动资产',b,0)),sum(decode(a,'流动负债',b,0)),sum(decode(a,'货币资金',b,0)) from table
sulins 2008-01-31
  • 打赏
  • 举报
回复

select a.资产, a.年初数, a.期末数, b.资产, b.年初数, b.期末数
from
(
select 资产, 年初数, 期末数, rownum rn
from (select a.*, rownum rn from table_name a) t
where t.rn <= (select count(*)+1 from table_name)/2
) a,
(
select 资产, 年初数, 期末数, rownum rn
from (select a.*, rownum rn from table_name a) t
where t.rn > (select count(*)+1 from table_name)/2
) b
where a.rn=b.rn(+)


17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧