表一:tblBal (日期,客户,摘要,余额)
      1.2014-1-1   AA   上月结存    -220.00
表二:tblOrder(日期,客户,摘要,贷)
      1.2014-1-20  AA   预付款    375.00
表三:tblEarn (日期,客户,摘要,借)
      1.2014-1-22  AA    订单    1800.00 

解决方案 »

  1.   

    ----------------------------------------------------------------
    -- Author  :DBA_Huangzj(發糞塗牆)
    -- Date    :2014-01-26 13:48:12
    -- Version:
    --      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
    -- Dec 28 2012 20:23:12 
    -- Copyright (c) Microsoft Corporation
    -- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
    --
    ----------------------------------------------------------------
    --> 测试数据:[tblBal]
    if object_id('[tblBal]') is not null drop table [tblBal]
    go 
    create table [tblBal]([日期] DATE,[客户] varchar(2),[摘要] varchar(8),[余额] numeric(5,2))
    insert [tblBal]
    select '2014-1-1','AA','上月结存',-220.00
    --> 测试数据:[tblOrder]
    if object_id('[tblOrder]') is not null drop table [tblOrder]
    go 
    create table [tblOrder]([日期] DATE,[客户] varchar(2),[摘要] varchar(6),[贷] numeric(5,2))
    insert [tblOrder]
    select '2014-1-20','AA','预付款',375.00
    --> 测试数据:[tblEarn]
    if object_id('[tblEarn]') is not null drop table [tblEarn]
    go 
    create table [tblEarn]([日期] DATE,[客户] varchar(2),[摘要] varchar(4),[借] numeric(6,2))
    insert [tblEarn]
    select '2014-1-22','AA','订单',1800.00
    --------------开始查询--------------------------select * ,NULL '贷',NULL '余额'
    from [tblEarn]
    UNION ALL 
    select 日期,客户,摘要,NULL,贷,NULL  from [tblOrder]
    UNION ALL 
    select 日期,客户,摘要,NULL,NULL ,余额
     from [tblBal]
    ----------------结果----------------------------
    /* 
    日期         客户   摘要       借                                       贷                                       余额
    ---------- ---- -------- --------------------------------------- --------------------------------------- ---------------------------------------
    2014-01-22 AA   订单       1800.00                                 NULL                                    NULL
    2014-01-20 AA   预付款      NULL                                    375.00                                  NULL
    2014-01-01 AA   上月结存     NULL                                    NULL                                    -220.00
    */
      

  2.   

    ----------------------------------------------------------------
    -- Author  :DBA_Huangzj(發糞塗牆)
    -- Date    :2014-01-26 13:48:12
    -- Version:
    --      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
    -- Dec 28 2012 20:23:12 
    -- Copyright (c) Microsoft Corporation
    -- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
    --
    ----------------------------------------------------------------
    --> 测试数据:[tblBal]
    if object_id('[tblBal]') is not null drop table [tblBal]
    go 
    create table [tblBal]([日期] DATE,[客户] varchar(2),[摘要] varchar(8),[余额] numeric(5,2))
    insert [tblBal]
    select '2014-1-1','AA','上月结存',-220.00
    --> 测试数据:[tblOrder]
    if object_id('[tblOrder]') is not null drop table [tblOrder]
    go 
    create table [tblOrder]([日期] DATE,[客户] varchar(2),[摘要] varchar(6),[贷] numeric(5,2))
    insert [tblOrder]
    select '2014-1-20','AA','预付款',375.00
    --> 测试数据:[tblEarn]
    if object_id('[tblEarn]') is not null drop table [tblEarn]
    go 
    create table [tblEarn]([日期] DATE,[客户] varchar(2),[摘要] varchar(4),[借] numeric(6,2))
    insert [tblEarn]
    select '2014-1-22','AA','订单',1800.00
    --------------开始查询--------------------------
    SELECT 日期,客户,摘要,ISNULL(CAST(借 AS VARCHAR),'-')借,isnull(CAST(贷 AS VARCHAR),'-') 贷,isnull(CAST(余额 AS VARCHAR),'-') 余额
    FROM (
    select * ,NULL '贷',NULL '余额'
    from [tblEarn]
    UNION ALL 
    select 日期,客户,摘要,NULL,贷,NULL  from [tblOrder]
    UNION ALL 
    select 日期,客户,摘要,NULL,NULL ,余额
     from [tblBal]
     )a
     --where 这里筛选条件
     ORDER BY 日期
    ----------------结果----------------------------
    /* 
    日期         客户   摘要       借                              贷                              余额
    ---------- ---- -------- ------------------------------ ------------------------------ ------------------------------
    2014-01-01 AA   上月结存     -                              -                              -220.00
    2014-01-20 AA   预付款      -                              375.00                         -
    2014-01-22 AA   订单       1800.00                        -                              -
    */
      

  3.   

    哦,看错了,你的预付款里面给出的数据和图不一样,确定没问题?另外你的sqlserver多少版本?
      

  4.   

    我用的是ACCESS 2013,没有用SQLServer,据说好像要用代码来实现,联合查询搞不定。
      

  5.   

    数据库用的是ACCESS ,程序用的是VB.NET
      

  6.   


    access中能用子查询不,如果能用,就能用sql实现的,不需要用代码来实现
      

  7.   

    那建议你去这里问吧,不然T-SQL写出来还不一定能用
      

  8.   

    嗯。有人推荐我来这个版块的,他说我这是SQL语句的问题。
      

  9.   


    上面贴的图是结果把,好像有问题。而你的数据是这样的:
    表一:tblBal (日期,客户,摘要,余额)
          1.2014-1-1   AA   上月结存    -220.00
    表二:tblOrder(日期,客户,摘要,贷)
          1.2014-1-20  AA   预付款    375.00
    表三:tblEarn (日期,客户,摘要,借)
          1.2014-1-22  AA    订单    1800.00但图中的借1800 却在 2014-1-22 这个是不是 有问题呀
      

  10.   

    写错了,改一下:上面贴的图是结果把,好像有问题。而你的数据是这样的:
    表一:tblBal (日期,客户,摘要,余额)
          1.2014-1-1   AA   上月结存    -220.00
    表二:tblOrder(日期,客户,摘要,贷)
          1.2014-1-20  AA   预付款    375.00
    表三:tblEarn (日期,客户,摘要,借)
          1.2014-1-22  AA    订单    1800.00
    但图中的借1800 却在 2014-1-20 这个是不是 有问题呀
      

  11.   

    理论是不大,但是很多函数和写法比如子查询,Access不支持,这样写出来你又执行不了,更麻烦