现在用access做报表:客户台帐表         客户      销售金额        入金金额          余额 
        01      10000          5000        5000 
     01                    2000        3000 
     01      4000                      7000 
其中 销售金额和入金金额分别从销售表和入金表引入,现在想请教  “余额 ” 的值应该如何做呢?!! 
即  余额=余额+销售金额-入金金额 ,有能直接实现此功能的函数么?
用sql或者vba怎么实现呢?

解决方案 »

  1.   

    select  客户,销售金额,入金金额,余额=余额+销售金额-入金金额 from tb
      

  2.   

    SELECT 客户 ,销售金额  ,入金金额  ,余额 ,ISNULL(余额 ,0)+ISNULL(销售金额,0)-ISNULL(入金金额 ,0)
    FROM 客户台帐表 
      

  3.   

    select 
    客户,
    销售金额=ISNULL(RTRIM(销售金额),''),
    入金金额=ISNULL(RTRIM(入金金额),''),
    余额=SUM(ISNULL(入金金额,0))-SUM(ISNULL(销售金额,0))
    from tb 
    group by 客户
      

  4.   


    IF OBJECT_ID('tb') IS NOT NULL 
    DROP TABLE tb 
    GO 
    CREATE TABLE tb(客户 varchar(10),销售金额 int,入金金额 int, 余额  int) 
    go 
    insert tb SELECT 
        '01',      10000  ,         5000  ,     0 UNION ALL SELECT 
        '01',       0     ,         2000  ,     0 UNION ALL SELECT 
        '01',      4000   ,         0     ,     0 
    declare @n int
    set @n=0update tb set @n=销售金额-入金金额+@n ,余额=@nselect * from tb
    客户         销售金额        入金金额        余额
    ---------- ----------- ----------- -----------
    01         10000       5000        5000
    01         0           2000        3000
    01         4000        0           7000(3 行受影响)
      

  5.   

    IF OBJECT_ID('tb') IS NOT NULL 
    DROP TABLE tb 
    GO 
    CREATE TABLE tb(客户 varchar(10),销售金额 int,入金金额 int, 余额  int) 
    go 
    insert tb SELECT 
        '01',      10000  ,         5000  ,     0 UNION ALL SELECT 
        '01',       0     ,         2000  ,     0 UNION ALL SELECT 
        '01',      4000   ,         0     ,     0 
    select identity(int,1,1) as id ,* into #1  from tb  
    select 
    客户,
    销售金额,
    入金金额,
    余额=(select SUM(ISNULL(销售金额,0))-SUM(ISNULL(入金金额,0)) from  #1 where 客户=k.客户 and ID<=k.id)
    from #1  k客户         销售金额         入金金额         余额
    ---------- ------------ ------------ -----------
    01         10000        5000         5000
    01         0            2000         3000
    01         4000         0            7000
      

  6.   

    IF OBJECT_ID('tb') IS NOT NULL 
    DROP TABLE tb 
    GO 
    CREATE TABLE tb(客户 varchar(10),销售金额 int,入金金额 int, 余额  int) 
    go 
    insert tb SELECT 
        '01',      10000  ,         5000  ,     0 UNION ALL SELECT 
        '01',       0     ,         2000  ,     0 UNION ALL SELECT 
        '01',      4000   ,         0     ,     0 
    select identity(int,1,1) as id ,* into #1  from tb  
    select 
    客户,
    销售金额=case  when 销售金额<>0 then  RTRIM(销售金额)  else '' end,
    入金金额=case  when 入金金额<>0  then  RTRIM(入金金额)  else '' end,
    余额=(select SUM(ISNULL(销售金额,0))-SUM(ISNULL(入金金额,0)) from  #1 where 客户=k.客户 and ID<=k.id)
    from #1  k客户         销售金额         入金金额         余额
    ---------- ------------ ------------ -----------
    01         10000        5000         5000
    01                      2000         3000
    01         4000                      7000
      

  7.   

    CREATE TABLE [入金表] (
    [客户] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [入金金额] [int] NULL ,
    [时间] [datetime] NULL CONSTRAINT [DF_入金表_时间] DEFAULT (getdate())
    ) ON [PRIMARY]
    GOCREATE TABLE [销售表] (
    [客户] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [销售金额] [int] NULL ,
    [时间] [datetime] NULL CONSTRAINT [DF_销售表_时间] DEFAULT (getdate())
    ) ON [PRIMARY]
    GOCREATE TABLE [客户台帐表] (
    [客户] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [销售金额] [int] NULL ,
    [入金金额] [int] NULL ,
    [余额] [int] NULL ,
    [时间] [datetime] NULL 
    ) ON [PRIMARY]
    GOINSERT INTO 客户台帐表(客户,销售金额,入金金额,时间) (SELECT ISNULL(a.客户, b.客户) AS 客户, ISNULL(a.销售金额, 0) AS 销售金额, ISNULL(b.入金金额, 0) AS 入金金额, ISNULL(a.时间, b.时间) AS 日期时间
    FROM 入金表 b FULL OUTER JOIN 销售表 a ON b.客户 = a.客户 AND DATEDIFF([day], b.时间, a.时间) = 0)
    ORDER BY 日期时间Update 客户台帐表 Set 余额=(Select Sum(销售金额)-Sum(入金金额) From 客户台帐表 Where 客户=x.客户 And DATEDIFF([day],时间,x.时间)>=0) From 客户台帐表 xSelect * From 客户台帐表