Мне удалось получить некоторые упорядоченные результаты, используя ROW_NUMBER()
и разделенные по коду страны и клиенту, упорядоченные по дате котировки. Столбец ROW_NUMBER()
называется PRank.
CountryCode ¦ ClientRef ¦ Quote Ref ¦ Name ¦ Address ¦ PostCode ¦ PreferencesCode ¦ QuoteDate ¦ PolicyType ¦ PRank ¦
0 AABB001 AABB001MB1 Mr A Smith 1 Country Lane WA21 2PU 5934611 2017-03-18 00:00:00 MB 1
0 AABB001 AABBMM1MB2 Mr A Smith 1 Country Lane WA21 2PU 5934611 2017-03-18 00:00:00 MB 2
0 AABB001 AABBMM1MB3 Mr A Smith 1 Country Lane WA21 2PU 5934611 2017-03-18 00:00:00 MB 3
0 BBGG003 BBGG003MB1 Mrs B Jones 2 City Road M1 3XY 312191 2017-09-02 00:00:00 MB 1
Это код для моего ROW_NUMBER()
столбца:
ROW_NUMBER() OVER(PARTITION BY CountryCode, ClientRef, QuoteDate
ORDER BY QuoteDate DESC, PolicyRef asc)
Есть много результатов, как в последнем ряду; они учитываются только до 1, потому что на указанную дату у клиента была только одна цитата. Я хочу исключить эти строки, не удаляя ни одной строки из результатов клиента, если в одну и ту же дату произошли множественные кавычки (т.е. я все еще хочу видеть все три строки первого клиента в результатах выше), поэтому я решил использовать CTE и фильтрацию на ROW_NUMBER приведет к потере данных из результатов, которые мне еще нужно увидеть.
Я пытался что-то сделать с HAVING и суммировать столбец PRank, но я не мог выяснить группировку, поскольку я не хочу на самом деле агрегировать данные, просто избавился от любых строк, где у ClientRef есть только один QuoteRef в день.