问题描述:
左侧是现金系统,右侧是总账系统。两侧数据分别来自两个不同的表(表结构略,如图所示即可)。
左右对账的条件是凭证字号。
如:凭证字号为调-4的项,左侧现金系统有一条日记账(2008-02-01, 摘要为857,科目代码为1001),对应的右侧也会有调-4的项,但有两条相关的凭证体(科目代码分别为1001和1002.01.01)。
第1个需求是,左右两侧凭证字号相同的项行数一致(上例中左侧只有一条,而右侧有两条,则左侧追加一空行保持一致)
从界面角度看,选中左侧相应行,右侧就会自动对应上相应行,从而实现对账。因此后台左侧数据和右侧数据相关的行用一个标记列归类。左、右凭证字号相同的归在一起。紧接着,是“科目对账”数据。同样在上述凭证字号为调-4的前提下,左侧科目为1001,右侧科目为1001和1002.01.01。涉及了多少科目就罗列多少科目。前提是在同样的凭证字号下。再紧接着就是“币别对账”数据。左侧的调-4只有一条,币别为人民币(图示中没有显示出来);右侧的调-4有两条,对应的币别分别为人民币和美元没有凭证字号的项就统一都放在最上面显示,如图中左侧“调-3”上面的数据。右侧没有对应的就用相应的空行补足。有的时候右侧的项会少于左侧的项,这时类似上述出来,右侧用空行补足。总之需要达到左右在凭证字号相同的情况下,占用的行数是一致的效果。
sql对账

解决方案 »

  1.   

    用left join 和right join 然后用union合并
    select * from A left join B where xxx
    union
    select * from A right join B where xxx
      

  2.   


    多谢版主,我试试看。另,用union的目的是将左右两种结果合并吗?我这里不要求合并,就是分为左右两侧显示就可以啦。
      

  3.   

    日期、凭证号为条件,
    LEFT JOIN、RIGHT JOIN之类的,
    有的时候右侧的项会少于左侧的项,这时类似上述出来,右侧用空行补足。总之需要达到左右在凭证字号相同的情况下,占用的行数是一致的效果。
    显示估计要用代码实现
      

  4.   


    我想清楚了,这里是要union的,相当于左侧、右侧的查询结果都在上面的这个SQL中啦!多谢多谢!
      

  5.   

    一般更多的时候是利用EXCEL来实现。