Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Заявка за показване на изразходвани кредити от транзакционната таблица

опитайте това:

WITH Credits_added AS (
    SELECT CreditLogId, OccurredOn, credits
    , SUM(credits) OVER (ORDER BY CreditLogId) - credits AS b --before
    , SUM(credits) OVER (ORDER BY CreditLogId) AS a --after
    , GivenByUserCode
    FROM @CreditLogs
    WHERE Credits > 0)
, Credits_spent AS (
    SELECT CreditLogId, OccurredOn, credits
    , SUM(credits) OVER (ORDER BY CreditLogId) * -1 + credits AS b
    , SUM(credits) OVER (ORDER BY CreditLogId) * -1 AS a
    FROM @CreditLogs
    WHERE Credits < 0)
SELECT s.CreditLogId, s.OccurredOn
, CASE WHEN a.a > s.a THEN s.a ELSE a.a END - CASE WHEN a.b > s.b THEN a.b ELSE s.b END AS Credits 
, a.GivenByUserCode
FROM Credits_added AS a
INNER JOIN Credits_spent AS s ON a.a > s.b AND s.a > a.b


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Въпрос за проектиране на база данни - Категории / Подкатегории

  2. Как да получите конкретен формат на датата ('dd-MMM-yyyy') в SELECT заявка SQL Server 2008 R2

  3. SQL Server 2016:Винаги криптиран

  4. Вмъкване на данни в изглед (SQL Server)

  5. Еквивалент на MySQL ПРИ АКТУАЛИЗИРАНЕ НА ДУБЛИКАТ КЛЮЧ в Sql Server