Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách thực hiện để nhận giá trị lớn nhất của tổng số đang chạy trong TSQL

SQL Server khó tính toán tổng số đang chạy.

Đây là giải pháp cho truy vấn của bạn (nhóm theo ngày):

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)

Bạn cần để có chỉ mục trên TranxDate để điều này hoạt động nhanh chóng.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tôi có thể lấy tên của tất cả các bảng của cơ sở dữ liệu SQL Server trong ứng dụng C # không?

  2. Biểu thức bảng thông thường, tại sao lại có dấu chấm phẩy?

  3. Làm thế nào tôi có thể tìm thấy tất cả các lần xuất hiện của văn bản cụ thể trong tất cả các thủ tục được lưu trữ trong cơ sở dữ liệu của tôi?

  4. Quyền SELECT bị từ chối trên đối tượng 'Địa chỉ', cơ sở dữ liệu 'CNET_85731', lược đồ 'dbo'

  5. chèn chuỗi con vào cột mới