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

Изберете заявка за съпоставяне на SQL

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

;WITH Subtotals
AS
(
  SELECT
    T1.Id, T1.CodeId, SUM(T2.Value) SubTotal  
  FROM Tb1 T1
    JOIN Tb1 T2
       ON T1.CodeId = T2.CodeId
         AND T1.Id >= T2.Id
  GROUP BY T1.Id, T1.CodeId
)
SELECT
    S.ID,
    S.CodeID,
    T1.Value,
    CASE WHEN T2.value >= S.Subtotal
         THEN T1.value
         ELSE T1.value - (S.Subtotal - T2.value)
    END UsedValue,
    T2.Value T2Value
FROM Subtotals S
   JOIN Tb2 T2
      ON S.CodeId = T2.CodeId
   JOIN Tb1 T1
      ON S.Id = T1.Id
WHERE T2.Value >= S.SubTotal - T1.Value

Вижте резултата на SQL FIDDLE



  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 (T-SQL)

  2. SSIS Job Scheduler не работи, но работи добре в BIDS и в услугите за интегриране на MSDB

  3. I/O грешка:SSO Failed:Не е заредена собствената SSPI библиотека

  4. Как да използвате шаблони в SQL Server Management Studio (SSMS) - SQL Server / TSQL урок, част 16

  5. Направете отделен ред, ако колона съдържа стойност, разделена със запетая