Зацикливание на SQL с помощью TempTable - PullRequest
0 голосов
/ 06 августа 2020

Я новичок в SQL сервере, не могли бы вы помочь мне написать запрос для моего сценария?

У меня есть это Table1:

PostingDate     ReturnCheckReason   PaymentStatus   PolicyNumber
----------------------------------------------------------------
7/23/2020 15:30 Null                    Payment         1234
8/6/2020 17:40  Null                    Payment         1234
8/4/2020 14:29  Null                    Payment         1234
8/5/2020 6:09   Null                    Payment         1234
8/5/2020 12:47  Cancel Payment          Return          1234

Вход в мои сохраненные процедура - это PolicyNumber, например, 1234, и код должен возвращать 5 строк.

Мне нужно покрыть эти случаи:

  1. Если первый платеж не отменен, я необходимо вернуть эту строку.

  2. Если первый платеж отменен, найдите следующий неотмененный платеж. Если будет обнаружен следующий платеж, который не был отменен, мне нужно вернуть эту строку.

Мой вопрос: я думаю, что мне нужно oop все данные для этой политики до Я получил неотмененный платеж, пожалуйста, дайте мне знать, как это сделать.

SELECT TOP 1
    [PolicyNumber],
    [PostingDate],
    [PaymentStatus]
FROM 
    [dbo].[Bil_PaymentSearch] WITH (NOLOCK)
WHERE 
    (PolicyNumber = @PolicyNumber) AND
    (ReturnCheckreason <> 'Cancel payment') AND 
    (PaymentOrReturn <> 'Return')
ORDER BY 
    PostingDate ASC 

1 Ответ

1 голос
/ 06 августа 2020

Думаю, нужно просто учитывать NULL s:

SELECT TOP 1 [PolicyNumber], [PostingDate], [PaymentStatus]
FROM [dbo].[Bil_PaymentSearch]
WHERE PolicyNumber = @PolicyNumber AND
      (ReturnCheckreason <> 'Cancel payment' OR ReturnCheckreason IS NULL) AND 
      PaymentOrReturn <> 'Return'
ORDER BY PostingDate ASC 
...