Мне нужно извлечь дублирующую информацию из той же таблицы, но это не вся информация в строке, которая одинакова - PullRequest
0 голосов
/ 17 мая 2019

Я обнаружил, что система создает дублирующийся биллинг на уровне политики, когда пользователь применяет отмену к случайному заявлению.

Мне нужно извлечь все дублированные платежные транзакции из таблицы транзакций, однако всю строкуне является дубликатом только нескольких полей, так как биллинг увеличивает баланс, а также создает новый GID и новое движение контракта.

Перемещение биллинга - 101 TransactionType, идентификатор - 100

Соответствующей информацией будет ContractGid, AccountingPeriodID, Amount Поля, которые будут отличаться Billinggid, Balance.

Я надеялся, что смогу просто написать инструкцию where, например

select *
from LIF_TMS_T_FinancialTransaction
where ContractGID = 'DF31A6BD-FC48-4722-A820-A66500C1E136'
and accountingperiodid = accountingperiodid

или любое другое совпадение, а затем извлечьдолжен только тянуть

select *
from LIF_TMS_T_FinancialTransaction
where ContractGID = 'DF31A6BD-FC48-4722-A820-A66500C1E136'
and accountingperiodid = accountingperiodid


GID ContractGID ContractMovementCount   MovementDate    ContractMovementID  AccountingPeriodID  Amount  Balance
31E7720D-FE34-47AD-92B3-AA0300B13FA5    DF31A6BD-FC48-4722-A820-A66500C1E136    2   2019-03-01 00:00:00.000 101 201649  -61 -61
AB46BC52-9CD3-4C9D-BEB2-AA1500F5A830    DF31A6BD-FC48-4722-A820-A66500C1E136    5   2019-03-01 00:00:00.000 101 201649  -61 -122
AE4C06E1-B1E8-41EE-88A3-AA070113C8B1    DF31A6BD-FC48-4722-A820-A66500C1E136    2   2019-03-02 00:00:00.000 810 201649  61  -61

Исходя из приведенной выше таблицы, я бы хотел извлечь только первые две записи.Это всего лишь образец

1 Ответ

1 голос
/ 17 мая 2019

Поскольку вы не опубликовали определение таблицы, я могу предложить только общие рекомендации. если вы знаете, что столбцы дублируются, что-то вроде этого сделает это

with t as (
    select *, rc = rowcount() over(partition by <duplicate columns>)
)
from mytable

select * from t where rc > 1 -- to show duplicate rows
delete * from t where rc > 1 -- to delete duplicate rows
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...