MySQL zacznie obsługiwać funkcje okien, takie jak row_number()
w wersji 8.x (jeszcze produkcja nie jest gotowa na dzień 29.10.2017 ), do tego czasu używanie @zmiennych jest techniką naśladowania efektu:
SELECT
@row_num :=IF(@prev_value=concat_ws('',orderid, invs.invoicenumber, HasClientpaid),@row_num+1,1)AS RowNumber
, orderid
, invs.[InvoiceID]
, invs.[InvoiceDate]
, invs.[InvoiceNumber]
, invs.[HasClientPaid]
, @prev_value := concat_ws('',orderid, invs.invoicenumber, HasClientpaid)
FROM InvoiceLineItems Ilt
JOIN Invoices Invs ON Ilt.InvoiceID = invs.InvoiceID
CROSS JOIN (SELECT @row_num :=1, @prev_value :=0) vars
ORDER BY
orderid, invs.invoicenumber, HasClientpaid
;
Musisz połączyć 3 pola orderid, invs.invoicenumber, HasClientpaid
naśladować oryginalne partycjonowanie, a kolejność będzie musiała być również według tych 3 kolumn. ORDER BY
jest niezbędne, aby to zadziałało, jeśli potrzebujesz innej ostatecznej kolejności, użyj powyższego jako podzapytania.