sql >> Database >  >> RDS >> Mysql

Selecteer een record alleen als de vorige een lagere waarde heeft

SELECT  a.ID, a.SerialNumber, 
        b.Remain_Toner_Black BeforeCount,
        a.Remain_Toner_Black AfterCount
FROM    
        (
            SELECT  A.ID, 
                    A.SerialNumber, 
                    A.Remain_Toner_Black,
                    (
                        SELECT  COUNT(*)
                        FROM    tableName c
                        WHERE   c.SerialNumber = a.SerialNumber AND
                                c.ID <= a.ID) AS RowNumber
            FROM    TableName a
        ) a
        INNER JOIN
        (
            SELECT  A.ID, 
                    A.SerialNumber, 
                    A.Remain_Toner_Black,
                    (
                        SELECT  COUNT(*)
                        FROM    tableName c
                        WHERE   c.SerialNumber = a.SerialNumber AND
                                c.ID <= a.ID) AS RowNumber
            FROM    TableName a
        ) b ON a.SerialNumber = b.SerialNumber AND
                a.RowNumber = b.RowNumber + 1
WHERE   b.Remain_Toner_Black < a.Remain_Toner_Black

UITVOER

╔══════╦═════════════════╦═════════════╦════════════╗
║  ID  ║  SERIALNUMBER   ║ BEFORECOUNT ║ AFTERCOUNT ║
╠══════╬═════════════════╬═════════════╬════════════╣
║ 7331 ║ Z5UEBJAC900002Y ║          36 ║        100 ║
║ 7088 ║ 3960125290      ║           0 ║         93 ║
║ 7100 ║ 3960125290      ║          93 ║        100 ║
╚══════╩═════════════════╩═════════════╩════════════╝

KORTE UITLEG

Wat de bovenstaande query doet, is dat het een volgnummer genereert dat ROW_NUMBER() nabootst op andere RDBS voor elk SerialNumber besteld op ID in oplopende volgorde.

De twee subquery's worden vervolgens samengevoegd via het SerialNumber en volgnummer gegenereerd. Op het gegenereerde aantal moet de waarde op de eerste subquery gelijk zijn aan plus één van de waarde op de tweede subquery om het aantal toner op de volgende herbestelling te krijgen.



  1. Oracle Instantclient installeren op Mac OS/X zonder omgevingsvariabelen in te stellen?

  2. Postgresql:psql-uitvoering scripten met wachtwoord

  3. MySQL-datumnotatie – wat u moet weten

  4. php while-lusvariabele voor elke derde div