比如说资产负债表
 资    产   年初数  期末数     负债及所有者权益   年初数  期末数
流动资产       流动负债:
  货币资金        短期借款 它们在数据库中只存储一列,而且是顺序存储,能不能用一条sql语句直接实现分列显示。也就是数据集的折叠。
希望各位大侠们能伸出你们的援助之手,帮我这个菜鸟一下,谢谢了· 

解决方案 »

  1.   

    行转列吗?
    假设数据如下
    a           b
    流动资产    1
    流动负债:   2
    货币资金    3大致sql如下
    select sum(decode(a,'流动资产',b,0)),sum(decode(a,'流动负债',b,0)),sum(decode(a,'货币资金',b,0)) from table 
      

  2.   

    不是行转列,是比如说一列的数据分两列显示,这一列得数据可能很多,不能逐个用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语言太强大了,想试一试。
      
      

  3.   

    本帖最后由 dinya2003 于 2008-02-21 14:51:42 编辑
      

  4.   

    不好意思我的语言表达能力一向不强。
    我用一个表(zcfz_struct)存它的结构,另一个表(zcfz_field)存它的字段:年初数,期末数
    资产负债表格式如下:
    http://www.ahhn-l-tax.gov.cn/tutu/xls/caiwu/3.xls
    可以清楚看到它是分两列显示,实现了数据集的折叠。
      

  5.   

    呃~~~~我的意思是你给个测试的表, 表中呢加点测试的数据. 我呢, 就不用建表啊/加数据什么的了, 嫌麻烦, 就直接用你给的Demo写SQL
      

  6.   


    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(+)