例: 现在有表aa如下
帐号    发生额    总余额
id      fse       zye
1001    100       100
1001    100       300
1001    100       300
1001    100       400
1001    50        500
1001    50        500
1002    5         5
1002    5         15
1002    5         15
1002    10        25
1002    5         40
1002    10        40
大概如上   不字段大家看出来没````   有的字段总余额是一样的```其实是不对的``比如1001总余额300的那个第1个300应该是200
就是总余额相同的时候  那相同的字段最后一个总余额肯定是对的 前一个总余额=最后一个余额-最后一个发生额
怎样用语句判断并改过来
求各位帮我做下  谢谢```       
不知道我讲的看懂没    没明白的提` 在线等。。在线解释

解决方案 »

  1.   

    SELECT ID,FSE,ZYE INTO #T FROM A GROUP BY ID,FSE,ZYE HAVING COUNT(1)>1
    DELETE FROM A INNER JOIN #T ON A.ID=#T.ID AND A.FSE=#T.FSE AND A.ZYE=#T.ZYE
    INSERT INTO A
    SELECT ID,FSE,ZYE-FSE FROM #T
    UNION ALL
    SELECT ID,FSE,ZYE FROM #T
      

  2.   

    服务器: 消息 156,级别 15,状态 1,行 2
    在关键字 "INNER" 附近有语法错误。
      

  3.   

    少写了个FROM
    SELECT ID,FSE,ZYE INTO #T FROM A GROUP BY ID,FSE,ZYE HAVING COUNT(1)>1
    DELETE FROM A 
    FROM A
    INNER JOIN #T ON A.ID=#T.ID AND A.FSE=#T.FSE AND A.ZYE=#T.ZYE
    INSERT INTO A
    SELECT ID,FSE,ZYE-FSE FROM #T
    UNION ALL
    SELECT ID,FSE,ZYE FROM #T
      

  4.   

    IF OBJECT_ID('AA') IS NOT NULL DROP TABLE AA
    IF OBJECT_ID('TEMPDB..#T') IS NOT NULL DROP TABLE #T
    GO
    CREATE TABLE AA(ID INT,FSE INT,ZYE INT)
    INSERT INTO AA 
    SELECT 1001, 100, 100 UNION ALL
    SELECT 1001, 100, 300 UNION ALL
    SELECT 1001, 100, 300 UNION ALL
    SELECT 1001, 100, 400 UNION ALL
    SELECT 1001, 50, 500 UNION ALL
    SELECT 1001, 50, 500 UNION ALL
    SELECT 1002, 5, 5 UNION ALL
    SELECT 1002, 5, 15 UNION ALL
    SELECT 1002, 5, 15 UNION ALL
    SELECT 1002, 10, 25 UNION ALL
    SELECT 1002, 5, 40 UNION ALL
    SELECT 1002, 10, 40
    SELECT ID,FSE,ZYE INTO #T FROM AA GROUP BY ID,FSE,ZYE HAVING COUNT(1)>1
    DELETE FROM AA 
    FROM AA
    INNER JOIN #T ON AA.ID=#T.ID AND AA.FSE=#T.FSE AND AA.ZYE=#T.ZYE
    INSERT INTO AA
    SELECT ID,FSE,ZYE-FSE FROM #T
    UNION ALL
    SELECT ID,FSE,ZYE FROM #T
    SELECT * FROM AA
    ORDER BY ID ,FSE,ZYE
    /*
    ID          FSE         ZYE
    ----------- ----------- -----------
    1001        50          450
    1001        50          500
    1001        100         100
    1001        100         200
    1001        100         300
    1001        100         400
    1002        5           5
    1002        5           10
    1002        5           15
    1002        5           40
    1002        10          25
    1002        10          40
    */
      

  5.   

    就是累计余额,Oracle、国产DM有提供SQL支持,SQL Server需要自己另写代码处理,注意效率