有一个表里面的内容是
字段为   单号   姓名    卡号     充值     消费
内容为  NULL    张三    9008     800.00   0.00   
        000089  张三    9008     0.00     100.00
        000089  张三    9008     0.00     200.00
        000089  张三    9008     0.00     200.00
  我想得到下面的结果集SQL语句要怎么写呀
        单号   姓名    卡号     余额
       000089  张三    9008     300.00  

解决方案 »

  1.   

    select isnull(单号,'00089'), 姓名, 卡号, 余额=sum(充值) - Sum(消费)
    from TB
    group by isnull(单号,'00089'), 姓名, 卡号
      

  2.   

    select isnull(单号,'00089'), 姓名, 卡号, 余额=sum(充值) - Sum(消费)
    from tableName
    group by isnull(单号,'00089'), 姓名, 卡号
      

  3.   

    select 单号 姓名 卡号  [充值-sum(消费)]as 余额
    form 表名
      

  4.   

    select max(单号), 姓名, 余额=sum(充值) - Sum(消费)
    from tableName group by 姓名
      

  5.   

    select 单号 姓名 卡号 [充值-sum(消费)]as 余额
    form tablename
      

  6.   

    按chuanzhang5687 说的还是不行,我有多条记录,我现在只要一条记录就成
      

  7.   


    select max(单号) as 单号, 姓名, 卡号, 余额=sum(充值) - Sum(消费)
    from tableName
    group by 姓名,卡号
      

  8.   

    对不起,我是没搞清楚数据结构 完整数据如下
       单号   姓名 卡号  充值     消费        员工    日期
       NULL  张三 9008 800.00  0.00       李      2010-10-1
      000081 张三 9008 0.00    100.00     王      2010-10-2
      000085 张三 9008 0.00    200.00     陈      2010-10-19
      000089 张三 9008 0.00    200.00     肖      2010-12-23
      NULL   李四 9003 500.00  0.00       李      2010-12-20
      000091  李四 9003 0.00    200        肖     2011-1-12我想得到的結果是
         单号  姓名  卡号    余額    員工        日期
       000089 张三  9008  300.00   肖        2010-12-23 
      

  9.   


    select max(isnull(单号,'')) as 单号,姓名,卡号,sum(充值)-sum(消费) as 余額,
    max(员工) as 员工,max(日期) as 日期
    from tablename 
    group by 姓名
      

  10.   

    掉了个卡号select max(isnull(单号,'')) as 单号,姓名,卡号,sum(充值)-sum(消费) as 余額,
    max(员工) as 员工,max(日期) as 日期
    from tablename 
    group by 姓名,卡号
      

  11.   

    谢谢 lxpbs8851
    不行,主要是员工不是我要的那个人?
      

  12.   


    select a.* ,b.员工 as 员工
    from 
    (select max(isnull(单号,'')) as 单号,姓名,卡号,sum(充值)-sum(消费) as 余額,
    max(日期) as 日期
    from tablename 
    group by 姓名,卡号) a inner join 
    tablename  b
    where a.姓名=b.姓名 and a.卡号=b.卡号 and a.日期<=b.日期 
      

  13.   


    select a.* ,b.员工 as 员工
    from 
    (select max(isnull(单号,'')) as 单号,姓名,卡号,sum(充值)-sum(消费) as 余額,
    max(日期) as 日期
    from tablename 
    group by 姓名,卡号) a inner join 
    tablename  b
    on a.姓名=b.姓名 and a.卡号=b.卡号 where a.日期<=b.日期 
      

  14.   

    select 单号,姓名,卡号,
           余額=(select sum(充值)-sum(消费) from tb b where b.姓名=tb.姓名),
           员工,日期 
    from tb
    where not exists (select 1 from tb as a where a.姓名=tb.姓名 and a.单号>tb.单号)