Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara Mengambil catatan berdasarkan Tanggal di MYSQL

Gunakan ROW_NUMBER() fungsi jendela untuk mendapatkan baris dengan Run_amt bulan maksimum dan kemudian dengan agregasi bersyarat:

SELECT t.ID, t.Name, t.Amount,
  MAX(CASE WHEN LAST_DAY(Date) = LAST_DAY(CURRENT_DATE) THEN cal_amt END) cal_amt,
  MAX(CASE WHEN t.rn = 1 THEN Run_amt END) Run_amt
FROM (
  SELECT *,
    ROW_NUMBER() OVER (PARTITION BY ID, Name, Amount ORDER BY Date DESC) rn
  FROM tablename
) t
GROUP BY t.ID, t.Name, t.Amount

Atau:

SELECT t.ID, t.Name, t.Amount,
       MAX(t.cal_amt) cal_amt,
       MAX(t.Run_amt) Run_amt
FROM (
  SELECT ID, Name, Amount,
    MAX(CASE WHEN LAST_DAY(Date) = LAST_DAY(CURRENT_DATE) THEN cal_amt END) 
      OVER (PARTITION BY ID, Name, Amount ORDER BY Date DESC) cal_amt,
    FIRST_VALUE(Run_amt) OVER (PARTITION BY ID, Name, Amount ORDER BY Date DESC) Run_amt
  FROM tablename
) t  
GROUP BY t.ID, t.Name, t.Amount

Lihat demo .
Hasil:

> ID | Name   | Amount | cal_amt | Run_amt
> -: | :----- | -----: | ------: | ------:
>  1 | Test   |  15000 |   12000 |   15000
>  2 | Test_1 |  18000 |   16000 |   25000



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menghapus record di DB dengan mySQL menggunakan group by

  2. MySql menyisipkan data biner ke db tanpa kesalahan

  3. PHP - Mencocokkan istilah pencarian mysql_query

  4. pengaturan useLegacyAuth=1 di Workbench 6.0

  5. Bagaimana cara memilih subkategori dari kategori yang dipilih menggunakan fungsi bersarang di PHP?