sql >> Database >  >> RDS >> Sqlserver

Moet gegevens uit één tabel selecteren na min met één waarde

De eenvoudigste manier om dit te doen, is door een lopend aggregaat te gebruiken. In je oorspronkelijke voorbeeld had je twee tabellen, en als dit het geval is, voer dan gewoon een som uit op die tabel zoals ik doe in de subselect en sla die waarde op in de variabele die ik heb gemaakt @Sum.

De CTE berekent wat de waarde zou zijn als deze voor elk record wordt opgeteld en vervolgens wordt opgeteld bij het berekende totaal, en houdt dan de positieve waarden bij.

Ik geloof dat dit aan uw behoeften zal voldoen.

DECLARE @Sum INT;
SET @Sum = 800;

WITH    RunningTotals
          AS (
               SELECT   [SNo]
                      , [Amount]
                      , [Amount] + (
                                     SELECT ISNULL(SUM([Amount]), 0)
                                     FROM   [Table1] t2
                                     WHERE  t2.[SNo] < t.SNo
                                   ) [sums]
               FROM     [Table1] t
    ),
    option_sums
      AS (
           SELECT   ROW_NUMBER() OVER ( ORDER BY [SNo] ) [SNo]
                  , CASE WHEN ( [Sums] - @Sum ) > 0 THEN [Sums] - @Sum
                         ELSE [Amount]
                    END AS [Amount]
                  , sums
                  , [Amount] [OriginalAmount]
                  , [OriginalID] = [SNo]
           FROM     [RunningTotals] rt
           WHERE    ( [Sums] - @Sum ) > 0
         )
 SELECT [SNo]
      , CASE [SNo]
          WHEN 1 THEN [Amount]
          ELSE [OriginalAmount]
        END AS [Amount]
      , [OriginalID]
 FROM   option_sums 

SNo Amount  OriginalID
--- ------  ----------
1   200     3
2   100     4
3   100     5
4   500     6
5   400     7
6   100     8
7   200     9



  1. Hoe ORA-12505 te repareren, TNS:luisteraar kent momenteel geen SID die is opgegeven in de connect-descriptor

  2. Wat zijn de verschillende manieren om gegevens in de SQL Server-tabel in te voegen - SQL Server / TSQL-zelfstudie, deel 100

  3. Hoe Tanh() werkt in PostgreSQL

  4. mysql-hulpprogramma voor querycontrole