Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara berkinerja untuk mendapatkan nilai maksimum dari total berjalan di TSQL

SQL Server payah dalam menghitung total lari.

Inilah solusi untuk pertanyaan Anda (yang dikelompokkan berdasarkan tanggal):

WITH    q AS
        (
        SELECT  TranxDate, SUM(TranxAmt) AS TranxSum
        FROM    t_transaction
        GROUP BY
                TranxDate
        ),
        m (TranxDate, TranxSum) AS
        (
        SELECT  MIN(TranxDate), SUM(TranxAmt)
        FROM    (
                SELECT  TOP 1 WITH TIES *
                FROM    t_transaction
                ORDER BY
                        TranxDate
                ) q
        UNION ALL
        SELECT  DATEADD(day, 1, m.TranxDate),
                m.TranxSum + q.TranxSum
        FROM    m
        CROSS APPLY
                (
                SELECT  TranxSum
                FROM    q
                WHERE   q.TranxDate = DATEADD(day, 1, m.TranxDate) 
                ) q
        WHERE   m.TranxDate <= GETDATE()
        )
SELECT  TOP 1 *
FROM    m
ORDER BY
        TranxSum DESC
OPTION (MAXRECURSION 0)

Anda membutuhkan untuk memiliki indeks pada TranxDate agar ini bekerja dengan cepat.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2008 membandingkan dua tabel dalam database yang sama dan mendapatkan kolom diubah

  2. SYSDATETIMEOFFSET() Contoh di SQL Server (T-SQL)

  3. SQL Async Multiple Query Menggabungkan Hasil -- Hasil Maksimum (XYZ Teratas)

  4. Bagaimana saya bisa mengambil semua karyawan yang akan berusia 21 tahun dalam waktu satu bulan?

  5. Cadangan tingkat tabel