SQL-запрос для получения записей, где первая связанная запись не совпадает - PullRequest
0 голосов
/ 18 марта 2019

У меня есть 2 таблицы, примерно так:

Аренда
ID, LeaseDate

LeaseInvoices
ID, LeaseID, InvoiceDate, StartDate

Как найти все случаи, когда LeaseDate не совпадает с InvoiceDate счета-фактуры с первой StartDate?

Я не могу понять, как это сделать, что-то в этом роде?

SELECT * FROM LeaseInvoice
INNER JOIN Leases ON Leases.ID = LeaseInvoices.LeaseID
WHERE LeaseDate IS NULL
OR LeaseDate <> (
    SELECT TOP 1 InvoiceDate FROM LeaseInvoices
    ORDER BY StartDate DESC
)

1 Ответ

1 голос
/ 18 марта 2019

Для этого можно использовать функцию ROW_NUMBER(), например ::10000

SELECT
    ID
    , LeaseDate
    , InvoiceDate
    , StartDate
FROM
    (
        SELECT
            L.ID
            , L.LeaseDate
            , I.InvoiceDate
            , I.StartDate
            , ROW_NUMBER() OVER (PARTITION BY L.ID ORDER BY I.StartDate) R
        FROM
            Leases L
            JOIN LeaseInvoices I ON L.ID = I.LeaseID
    ) Q
WHERE
    R = 1
    AND LeaseDate <> InvoiceDate
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...