A SQL capacity remediation report can convert a selected reserve into a hold, shift, or shed action.

Program

Play the query to choose reserve and inspect the capacity action row.

reserve
capacity_shift_report.sql
Replay: real traced execution (multi-file project)
CREATE TABLE capacity_policy (hold_min INTEGER, shift_min INTEGER);
INSERT INTO capacity_policy VALUES (12, 6);
WITH params(reserve) AS (VALUES (8)) SELECT 'capacity' AS scope, reserve, CASE WHEN reserve >= (SELECT hold_min FROM capacity_policy) THEN 'hold' WHEN reserve >= (SELECT shift_min FROM capacity_policy) THEN 'shift' ELSE 'shed' END AS action FROM params;
CREATE TABLE capacity_policy (hold_min INTEGER, shift_min INTEGER);
INSERT INTO capacity_policy VALUES (12, 6);
WITH params(reserve) AS (VALUES (4)) SELECT 'capacity' AS scope, reserve, CASE WHEN reserve >= (SELECT hold_min FROM capacity_policy) THEN 'hold' WHEN reserve >= (SELECT shift_min FROM capacity_policy) THEN 'shift' ELSE 'shed' END AS action FROM params;
CREATE TABLE capacity_policy (hold_min INTEGER, shift_min INTEGER);
INSERT INTO capacity_policy VALUES (12, 6);
WITH params(reserve) AS (VALUES (16)) SELECT 'capacity' AS scope, reserve, CASE WHEN reserve >= (SELECT hold_min FROM capacity_policy) THEN 'hold' WHEN reserve >= (SELECT shift_min FROM capacity_policy) THEN 'shift' ELSE 'shed' END AS action FROM params;
  1. tables ← 1 row

    1CREATE TABLE capacity_policy (hold_min INTEGER, shift_min INTEGER);2INSERT INTO capacity_policy VALUES (12, 6);
    values this step1 rowtables
  2. capacity_policy ← 1 row

    1CREATE TABLE capacity_policy (hold_min INTEGER, shift_min INTEGER);2INSERT INTO capacity_policy VALUES (12, 6);3WITH params(reserve) AS (VALUES (8)) SELECT 'capacity' AS scope, reserve, CASE WHEN reserve >= (SELECT hold_min FROM capacity_policy) THEN 'hold' WHEN reserve >= (SELECT shift_min FROM capacity_policy) THEN 'shift' ELSE 'shed' END AS action FROM params;
    values this step1 rowcapacity_policy
  3. result ← 1 row

    2INSERT INTO capacity_policy VALUES (12, 6);3WITH params(reserve) AS (VALUES (8)) SELECT 'capacity' AS scope, reserve, CASE WHEN reserve >= (SELECT hold_min FROM capacity_policy) THEN 'hold' WHEN reserve >= (SELECT shift_min FROM capacity_policy) THEN 'shift' ELSE 'shed' END AS action FROM params;
    values this step1 rowresult
  1. tables ← 1 row

    1CREATE TABLE capacity_policy (hold_min INTEGER, shift_min INTEGER);2INSERT INTO capacity_policy VALUES (12, 6);
    values this step1 rowtables
  2. capacity_policy ← 1 row

    1CREATE TABLE capacity_policy (hold_min INTEGER, shift_min INTEGER);2INSERT INTO capacity_policy VALUES (12, 6);3WITH params(reserve) AS (VALUES (4)) SELECT 'capacity' AS scope, reserve, CASE WHEN reserve >= (SELECT hold_min FROM capacity_policy) THEN 'hold' WHEN reserve >= (SELECT shift_min FROM capacity_policy) THEN 'shift' ELSE 'shed' END AS action FROM params;
    values this step1 rowcapacity_policy
  3. result ← 1 row

    2INSERT INTO capacity_policy VALUES (12, 6);3WITH params(reserve) AS (VALUES (4)) SELECT 'capacity' AS scope, reserve, CASE WHEN reserve >= (SELECT hold_min FROM capacity_policy) THEN 'hold' WHEN reserve >= (SELECT shift_min FROM capacity_policy) THEN 'shift' ELSE 'shed' END AS action FROM params;
    values this step1 rowresult
  1. tables ← 1 row

    1CREATE TABLE capacity_policy (hold_min INTEGER, shift_min INTEGER);2INSERT INTO capacity_policy VALUES (12, 6);
    values this step1 rowtables
  2. capacity_policy ← 1 row

    1CREATE TABLE capacity_policy (hold_min INTEGER, shift_min INTEGER);2INSERT INTO capacity_policy VALUES (12, 6);3WITH params(reserve) AS (VALUES (16)) SELECT 'capacity' AS scope, reserve, CASE WHEN reserve >= (SELECT hold_min FROM capacity_policy) THEN 'hold' WHEN reserve >= (SELECT shift_min FROM capacity_policy) THEN 'shift' ELSE 'shed' END AS action FROM params;
    values this step1 rowcapacity_policy
  3. result ← 1 row

    2INSERT INTO capacity_policy VALUES (12, 6);3WITH params(reserve) AS (VALUES (16)) SELECT 'capacity' AS scope, reserve, CASE WHEN reserve >= (SELECT hold_min FROM capacity_policy) THEN 'hold' WHEN reserve >= (SELECT shift_min FROM capacity_policy) THEN 'shift' ELSE 'shed' END AS action FROM params;
    values this step1 rowresult
reserve parameter `reserve` is selected in the parameter CTE rather than read from live capacity data.
policy table Fixed threshold rows keep the hold and shift boundaries visible.
action result The result row keeps the reserve and remediation action together.