How to do a cascading decrement across multiple columns

jdoig

I have N columns: A, B, C, .. N each are decimal(8,2). I want to write a stored procedure that takes a row id and a single decimal(8,2) X.

I want it to decrement A until A reaches zero OR until it has reduced it by X. If A reaches zero and X was greater that A then I want to decrement B by X - A's original value and so on.

example:

select * from foo_table where id = 0;

| id| A | B | C |..
+---+---+---+---+
| 0 | 5 | 3 | 2 |

call my_stored_proc(0,9);
select * from foo_table where id = 0;

| id| A | B | C |..
+---+---+---+---+
| 0 | 0 | 0 | 1 |

What would be the recommended and performant way of doing this?

fancyPants

Given your sample data this query does the job:

UPDATE t
JOIN (

    SELECT
    t.id,
    GREATEST(A - @a, 0) A,
    @a := GREATEST(@a - A, 0),
    GREATEST(B - @a, 0) B,
    @a := GREATEST(@a - B, 0),
    GREATEST(C - @a, 0) C,
    @a := GREATEST(@a - C, 0)
    FROM
    t
    , (SELECT @a := 9) var_init_subquery
    WHERE id = 0
    ORDER BY id

) sq ON t.id = sq.id
SET t.A = sq.A
, t.B = sq.B
, t.C = sq.C;
  • see it working live in an sqlfiddle
  • here you can read more about variables in queries

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

Python/Pandas: How to do a join on matches across multiple columns

From Dev

How to use groupby transform across multiple columns

From Dev

How to groupby count across multiple columns in pandas

From Dev

How do I consolidate unique row values into a single column across multiple columns?

From Dev

How do I consolidate unique row values into a single column across multiple columns?

From Dev

How do you restrict specific content to only one column instead of going across multiple columns?

From Dev

How do I highlight duplicate cells across 3 columns for multiple rows?

From Dev

How do I find the difference between two values in different dataframes across multiple rows and columns?

From Dev

Is there a %in% operator across multiple columns

From Dev

Count across multiple columns

From Dev

Search across multiple columns

From Dev

Vlookup across multiple columns

From Dev

Is there a %in% operator across multiple columns

From Dev

Count across multiple columns

From Dev

How to index and make multiple matches across multiple columns in excel?

From Java

How to "select distinct" across multiple data frame columns in pandas?

From Dev

How to handle multiple IFTHEN queries across columns in Excel?

From Dev

How to produce summary stats across multiple columns in R?

From Dev

SQL Server - How to count number of distinct entries across multiple columns?

From Dev

How to parse date and time with milliseconds, spread across multiple columns?

From Dev

How to use dplyr across to filter NA in multiple columns

From Dev

How to summarize across multiple columns with condition on another (grouped) column with dplyr?

From Dev

How to use dplyr across to filter NA in multiple columns

From Dev

How to place a chart across multiple columns of a table in Report Builder/SSRS

From Dev

How to apply a single section across multiple columns in Business Intelligence

From Dev

How to do a cascading remove in Angularfire?

From Dev

How to do Cascading Include in LiteDB

From Dev

How to add across columns

From Java

Sum across multiple columns with dplyr

Related Related

  1. 1

    Python/Pandas: How to do a join on matches across multiple columns

  2. 2

    How to use groupby transform across multiple columns

  3. 3

    How to groupby count across multiple columns in pandas

  4. 4

    How do I consolidate unique row values into a single column across multiple columns?

  5. 5

    How do I consolidate unique row values into a single column across multiple columns?

  6. 6

    How do you restrict specific content to only one column instead of going across multiple columns?

  7. 7

    How do I highlight duplicate cells across 3 columns for multiple rows?

  8. 8

    How do I find the difference between two values in different dataframes across multiple rows and columns?

  9. 9

    Is there a %in% operator across multiple columns

  10. 10

    Count across multiple columns

  11. 11

    Search across multiple columns

  12. 12

    Vlookup across multiple columns

  13. 13

    Is there a %in% operator across multiple columns

  14. 14

    Count across multiple columns

  15. 15

    How to index and make multiple matches across multiple columns in excel?

  16. 16

    How to "select distinct" across multiple data frame columns in pandas?

  17. 17

    How to handle multiple IFTHEN queries across columns in Excel?

  18. 18

    How to produce summary stats across multiple columns in R?

  19. 19

    SQL Server - How to count number of distinct entries across multiple columns?

  20. 20

    How to parse date and time with milliseconds, spread across multiple columns?

  21. 21

    How to use dplyr across to filter NA in multiple columns

  22. 22

    How to summarize across multiple columns with condition on another (grouped) column with dplyr?

  23. 23

    How to use dplyr across to filter NA in multiple columns

  24. 24

    How to place a chart across multiple columns of a table in Report Builder/SSRS

  25. 25

    How to apply a single section across multiple columns in Business Intelligence

  26. 26

    How to do a cascading remove in Angularfire?

  27. 27

    How to do Cascading Include in LiteDB

  28. 28

    How to add across columns

  29. 29

    Sum across multiple columns with dplyr

HotTag

Archive