MySQL akan mulai mendukung fungsi jendela seperti row_number()
dalam versi 8.x (belum siap produksi pada 29 Okt 2017 ), sampai saat itu menggunakan @variables adalah teknik untuk meniru efeknya:
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
;
Anda perlu menggabungkan 3 bidang orderid, invs.invoicenumber, HasClientpaid
untuk meniru partisi asli Anda, dan urutannya harus dengan 3 kolom itu juga. ORDER BY
sangat penting agar ini berfungsi, jika Anda memerlukan pemesanan akhir lainnya, gunakan yang di atas sebagai subquery.