Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wybierz zapytanie mapujące SQL

Spróbuj tego:

;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

Zobacz wynik na 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. Konwertuj „datetimeoffset” na „datetime” w SQL Server (przykłady T-SQL)

  2. konwersja typu danych varchar na typ danych datetime spowodowała otrzymanie wartości spoza zakresu

  3. Jak obniżyć wersję pliku MDF programu SQL 2008 do użytku w programie SQL 2005?

  4. Macierz obsługiwanych wersji SQL Server

  5. Co to są indeksy obejmujące i objęte zapytania w programie SQL Server?