比如说资产负债表
资 产 年初数 期末数 负债及所有者权益 年初数 期末数
流动资产 流动负债:
货币资金 短期借款 它们在数据库中只存储一列,而且是顺序存储,能不能用一条sql语句直接实现分列显示。也就是数据集的折叠。
希望各位大侠们能伸出你们的援助之手,帮我这个菜鸟一下,谢谢了·
资 产 年初数 期末数 负债及所有者权益 年初数 期末数
流动资产 流动负债:
货币资金 短期借款 它们在数据库中只存储一列,而且是顺序存储,能不能用一条sql语句直接实现分列显示。也就是数据集的折叠。
希望各位大侠们能伸出你们的援助之手,帮我这个菜鸟一下,谢谢了·
假设数据如下
a b
流动资产 1
流动负债: 2
货币资金 3大致sql如下
select sum(decode(a,'流动资产',b,0)),sum(decode(a,'流动负债',b,0)),sum(decode(a,'货币资金',b,0)) from table
资 产 年初数 期末数
流动资产
货币资金 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语言太强大了,想试一试。
我用一个表(zcfz_struct)存它的结构,另一个表(zcfz_field)存它的字段:年初数,期末数
资产负债表格式如下:
http://www.ahhn-l-tax.gov.cn/tutu/xls/caiwu/3.xls
可以清楚看到它是分两列显示,实现了数据集的折叠。
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(+)