Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Konwersja MySQL ROW_NUMBER() NAD PARTYCJĄ

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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wysyłanie zapytań do relacyjnej bazy danych za pomocą Google DataFlow Transformer

  2. ProxySQL:wszystkie zasoby Kilkadziesiąt dziewięć

  3. Czy czas letni ma wpływ na UTC_TIMESTAMP()?

  4. Mysql tworzy bazę danych z nową lokalizacją bazy danych

  5. Połącz dane aplikacji na Androida z bazą danych witryny