Удалите строки с противоположными значениями и сначала в последовательности и оставьте остальные с противоположным значением - PullRequest
0 голосов
/ 18 мая 2018

Я новичок в SQL Server.Может кто-то помочь мне, пожалуйста.У меня есть ситуация, когда мне нужно удалить строки, где сумма двух строк столбца Rate равна нулю при том же Parent ID.Например, мне нужно удалить строки id = 9 и 10, потому что сумма рейтинга по этим строкам равна нулю.-20.24 + 20.24 = 0 Эти дополнительные строки увеличивают размер отчета.Я хочу удалить следующие строки, где:

    ****Parent id = 77 id = 9 and 10
    Parent id = 88 id = 11 and 12
    Parent id = 99 id = 14 and 15
    Parent id = 110  id = 18  and 19
    Parent id = 111  id = 22 and 23****


    declare @testtable table (id int, PARENTID int, ENTRYDATE DATETIME, NAME VARCHAR(50), RATE NUMERIC(10, 2), ENDDATE VARCHAR(50), STATUS VARCHAR(50))

        insert into @testtable values
         (1,    11, '1/3/2017', 'TEST',     0.07,       '',             'NEW')
        ,(2,    22, '1/12/2017','TEST1',    -43.24,     '1/12/2017',    'TERM')
        ,(3,    33, '1/9/2017', 'TEST2',    -45.17,     '1/6/2017',     'TERM')
        ,(4,    44, '1/4/2017', 'TEST3',    1,          '',             'NEW')
        ,(5,    55, '1/3/2017', 'TEST4',     -32.54,    '1/2/2017',     'TERM')
        ,(6,    55, '1/24/2017','TEST5',     30.74,     '',             'NEW')
        ,(7,    66, '1/6/2017', 'TEST6',     11.56,     '',             'NEW')
        ,(8,    66, '1/19/2017','TEST7',    -7.56,      '1/6/2017',     'TERM')
        ,(9,    77, '1/18/2017','TEST8',    -20.24,     '1/20/2017' ,   'TERM')
        ,(10,   77, '1/19/2017','TEST9',    20.24,      '',             'NEW')
        ,(11,   88, '1/3/2017', 'TEST10',   -4.25,      '1/3/2017',     'TERM')
        ,(12,   88, '1/5/2017', 'TEST11',   4.25,       '',             'NEW')
        ,(13,   88, '1/5/2017', 'TEST12',   -4.25,      '1/3/2017',     'TERM')
        ,(14,   99, '1/5/2017', 'TEST13',   -19.15,     '1/2/2017'  ,   'TERM')
        ,(15,   99, '1/16/2017','TEST14',   19.15,      '',             'NEW')
        ,(16,   99, '1/16/2017','TEST15',   -19.15,     '1/16/2017',    'TERM')
        ,(17,   99, '1/24/2017','TEST16',   19.15,      '',             'NEW')
        ,(18,   110,    '1/5/2017', 'TEST17',   -21.86,     '1/2/2017'  ,   'TERM')
        ,(19,   110,    '1/5/2017', 'TEST18',   21.86,      '',             'NEW')
        ,(20,   110,    '1/16/2017','TEST19',   -21.86,     '1/16/2017',    'TERM')
        ,(21,   110,    '1/16/2017','TEST20',   21.86,      '',             'NEW')
        ,(22,   1111,   '1/11/2017','TEST21',   -7.36,      '12/30/2016',   'TERM')
        ,(23,   1111,   '1/13/2017','TEST22',   7.36,       '',             'NEW')
        ,(24,   1111,   '1/13/2017','TEST23',   -7.36,      '1/13/2017' ,   'TERM')
        ,(25,   1111,   '1/18/2017','TEST24',   8.14,       '',             'NEW')


select * from @testtable

id  PARENTID ENTRYDATE  NAME    RATE    ENDDATE    STATUS
1     11    1/3/2017    TEST    0.07                NEW
2     22    1/12/2017   TEST1   -43.24  1/12/2017   TERM
3     33    1/9/2017    TEST2   -45.17  1/6/2017    TERM
4     44    1/4/2017    TEST3    1                  NEW
5     55    1/3/2017    TEST4   -32.54  1/2/2017    TERM
6     55    1/24/2017   TEST5   30.74                NEW
7     66    1/6/2017    TEST6   11.56                NEW
8     66    1/19/2017   TEST7   -7.56   1/6/2017    TERM
9     77    1/18/2017   TEST8   -20.24  1/20/2017   TERM
10    77    1/19/2017   TEST9   20.24                NEW
11    88    1/3/2017    TEST10  -4.25   1/3/2017    TERM
12    88    1/5/2017    TEST11  4.25                NEW
13    88    1/5/2017    TEST12  -4.25   1/3/2017    TERM
14    99    1/5/2017    TEST13  -19.15  1/2/2017    TERM
15    99    1/16/2017   TEST14  19.15               NEW
16    99    1/16/2017   TEST15  -19.15  1/16/2017   TERM
17    99    1/24/2017   TEST16  19.15               NEW
18    110   1/5/2017    TEST17  -21.86  1/2/2017    TERM
19   110    1/5/2017    TEST18  21.86               NEW
20   110    1/16/2017   TEST19  -21.86  1/16/2017   TERM
21   110    1/16/2017   TEST20  21.86               NEW
22   1111   1/11/2017   TEST21  -7.36   12/30/2016  TERM
23   1111   1/13/2017   TEST22  7.36                NEW
24   1111   1/13/2017   TEST23  -7.36   1/13/2017   TERM
25   1111   1/18/2017   TEST24  8.14                NEW
                       **TOTAL    -88.61**          

Результат должен быть следующим.Итоговая оценка колонки не окажет влияния.Это то же самое.

id  PARENTID ENTRYDATE       NAME       RATE      ENDDATE     STATUS
1     11        1/3/2017      TEST      0.07                    NEW
2     22        1/12/2017     TEST1    -43.24    1/12/2017      TERM
3     33        1/9/2017      TEST2    -45.17     1/6/2017      TERM
4     44        1/4/2017      TEST3      1                      NEW
5     55        1/3/2017      TEST4    -32.54     1/2/2017      TERM
6     55        1/24/2017     TEST5     30.74                   NEW
7     66        1/6/2017      TEST6     11.56                   NEW
8     66        1/19/2017     TEST7     -7.56     1/6/2017      TERM
13    88        1/5/2017      TEST12    -4.25     1/3/2017      TERM
16    99        1/16/2017     TEST15    -19.15    1/16/2017     TERM
17    99        1/24/2017     TEST16     19.15                   NEW
20    110       1/16/2017     TEST19    -21.86    1/16/2017      TERM
21    110       1/16/2017     TEST20     21.86                    NEW
24    1111      1/13/2017     TEST23     -7.36    1/13/2017      TERM
25    1111      1/18/2017     TEST24      8.14                    NEW
                              **TOTAL      -88.61**     
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...