-- Model generated by Power Migrate 0.1.0a1 from 'pricing_calculator.xlsx' (SQL target, duckdb dialect). -- Load: run functions.sql, fill `cells(sheet, row_num, col, num, txt, flag)` with the input cells and -- `sheet_rows(sheet, row_num)` with one row per sheet row (the harness does both), then run this file. -- 192 steps rewrite one block of formula cells each, in dependency order; the final views carry -- the computed sheets. Excel errors and the empty string are NULL; a blank input counts as 0 in arithmetic. -- Sheet Inputs: input cells as typed columns (one row per sheet row) CREATE TABLE inputs_00 AS SELECT spine.row_num, max(CASE WHEN cell.col = 'B' THEN cell.num END) AS "B", max(CASE WHEN cell.col = 'B' THEN cell.txt END) AS "B_txt" FROM sheet_rows AS spine LEFT JOIN cells AS cell ON cell.sheet = spine.sheet AND cell.row_num = spine.row_num WHERE spine.sheet = 'Inputs' GROUP BY spine.row_num; -- Sheet RateCard: input cells as typed columns (one row per sheet row) CREATE TABLE rate_card_00 AS SELECT spine.row_num, max(CASE WHEN cell.col = 'A' THEN cell.txt END) AS "A_txt", max(CASE WHEN cell.col = 'B' THEN cell.num END) AS "B", max(CASE WHEN cell.col = 'C' THEN cell.num END) AS "C", max(CASE WHEN cell.col = 'D' THEN cell.num END) AS "D", max(CASE WHEN cell.col = 'E' THEN cell.num END) AS "E", max(CASE WHEN cell.col = 'F' THEN cell.num END) AS "F", max(CASE WHEN cell.col = 'H' THEN cell.num END) AS "H", max(CASE WHEN cell.col = 'I' THEN cell.num END) AS "I" FROM sheet_rows AS spine LEFT JOIN cells AS cell ON cell.sheet = spine.sheet AND cell.row_num = spine.row_num WHERE spine.sheet = 'RateCard' GROUP BY spine.row_num; -- Sheet Schedule: input cells as typed columns (one row per sheet row) CREATE TABLE schedule_00 AS SELECT spine.row_num, max(CASE WHEN cell.col = 'A' THEN cell.num END) AS "A", max(CASE WHEN cell.col = 'E' THEN cell.num END) AS "E" FROM sheet_rows AS spine LEFT JOIN cells AS cell ON cell.sheet = spine.sheet AND cell.row_num = spine.row_num WHERE spine.sheet = 'Schedule' GROUP BY spine.row_num; -- Sheet Economics: input cells as typed columns (one row per sheet row) CREATE TABLE economics_00 AS SELECT spine.row_num FROM sheet_rows AS spine LEFT JOIN cells AS cell ON cell.sheet = spine.sheet AND cell.row_num = spine.row_num WHERE spine.sheet = 'Economics' GROUP BY spine.row_num; -- Sheet Sensitivity: input cells as typed columns (one row per sheet row) CREATE TABLE sensitivity_00 AS SELECT spine.row_num, max(CASE WHEN cell.col = 'A' THEN cell.num END) AS "A", max(CASE WHEN cell.col = 'B' THEN cell.num END) AS "B", max(CASE WHEN cell.col = 'C' THEN cell.num END) AS "C", max(CASE WHEN cell.col = 'D' THEN cell.num END) AS "D", max(CASE WHEN cell.col = 'E' THEN cell.num END) AS "E", max(CASE WHEN cell.col = 'F' THEN cell.num END) AS "F" FROM sheet_rows AS spine LEFT JOIN cells AS cell ON cell.sheet = spine.sheet AND cell.row_num = spine.row_num WHERE spine.sheet = 'Sensitivity' GROUP BY spine.row_num; -- Sheet Summary: input cells as typed columns (one row per sheet row) CREATE TABLE summary_00 AS SELECT spine.row_num FROM sheet_rows AS spine LEFT JOIN cells AS cell ON cell.sheet = spine.sheet AND cell.row_num = spine.row_num WHERE spine.sheet = 'Summary' GROUP BY spine.row_num; -- Logic blocks, in dependency order -- Inputs!B16: Financed amount North (single, 1 cells) -- Excel: =B3*(1-B4)-B8*0 CREATE TABLE inputs_01 AS SELECT base.row_num, CASE WHEN base.row_num = 16 THEN ((COALESCE(params.asset_cost, 0) * (1 - COALESCE(params.inputs_b4, 0))) - (COALESCE(params.inputs_b8, 0) * 0)) ELSE base."B" END AS "B", base."B_txt" FROM inputs_00 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_00 WHERE row_num = 3) AS asset_cost, (SELECT "B" FROM inputs_00 WHERE row_num = 4) AS inputs_b4, (SELECT "B" FROM inputs_00 WHERE row_num = 8) AS inputs_b8 ) AS params; -- Inputs!B17: Balloon (GBP) North (single, 1 cells) -- Excel: =ROUND(B3*B6,2) CREATE TABLE inputs_02 AS SELECT base.row_num, CASE WHEN base.row_num = 17 THEN xl_round((COALESCE(params.asset_cost, 0) * COALESCE(params.inputs_b6, 0)), 2) ELSE base."B" END AS "B", base."B_txt" FROM inputs_01 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_01 WHERE row_num = 3) AS asset_cost, (SELECT "B" FROM inputs_01 WHERE row_num = 6) AS inputs_b6 ) AS params; -- Inputs!B18: Days to first payment (single, 1 cells) -- Excel: =NETWORKDAYS(B14,B7) CREATE TABLE inputs_03 AS SELECT base.row_num, CASE WHEN base.row_num = 18 THEN xl_networkdays(COALESCE(params.inputs_b14, 0), COALESCE(params.start_date, 0)) ELSE base."B" END AS "B", base."B_txt" FROM inputs_02 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_02 WHERE row_num = 14) AS inputs_b14, (SELECT "B" FROM inputs_02 WHERE row_num = 7) AS start_date ) AS params; -- Inputs!B19: First payment date (single, 1 cells) -- Excel: =WORKDAY(EDATE(B7,1),0) CREATE TABLE inputs_04 AS SELECT base.row_num, CASE WHEN base.row_num = 19 THEN xl_workday(xl_edate(COALESCE(params.start_date, 0), 1), 0) ELSE base."B" END AS "B", base."B_txt" FROM inputs_03 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_03 WHERE row_num = 7) AS start_date ) AS params; -- Inputs!B20: Term years (30/360) (single, 1 cells) -- Excel: =DATEDIF(B7,EDATE(B7,B5),"m")/12 CREATE TABLE inputs_05 AS SELECT base.row_num, CASE WHEN base.row_num = 20 THEN (xl_datedif_m(COALESCE(params.start_date, 0), xl_edate(COALESCE(params.start_date, 0), COALESCE(params.term_months, 0))) / NULLIF(12, 0)) ELSE base."B" END AS "B", base."B_txt" FROM inputs_04 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_04 WHERE row_num = 7) AS start_date, (SELECT "B" FROM inputs_04 WHERE row_num = 5) AS term_months ) AS params; -- Inputs!B21: Term years (actual) (single, 1 cells) -- Excel: =YEARFRAC(B7,EDATE(B7,B5),1) CREATE TABLE inputs_06 AS SELECT base.row_num, CASE WHEN base.row_num = 21 THEN xl_yearfrac(COALESCE(params.start_date, 0), xl_edate(COALESCE(params.start_date, 0), COALESCE(params.term_months, 0)), 1) ELSE base."B" END AS "B", base."B_txt" FROM inputs_05 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_05 WHERE row_num = 7) AS start_date, (SELECT "B" FROM inputs_05 WHERE row_num = 5) AS term_months ) AS params; -- RateCard!B10: Selected margin (bps) (single, 1 cells) -- Excel: =INDEX(B3:F7,MATCH(Inputs!B9,A3:A7,0),MATCH(Inputs!B5,B2:F2,0)) CREATE TABLE rate_card_01 AS SELECT base.row_num, base."A_txt", CASE WHEN base.row_num = 10 THEN (SELECT CASE CAST(floor((SELECT CASE WHEN data."B" = COALESCE(params.term_months, 0) THEN 1 WHEN data."C" = COALESCE(params.term_months, 0) THEN 2 WHEN data."D" = COALESCE(params.term_months, 0) THEN 3 WHEN data."E" = COALESCE(params.term_months, 0) THEN 4 WHEN data."F" = COALESCE(params.term_months, 0) THEN 5 END FROM rate_card_00 AS data WHERE data.row_num = 2)) AS INTEGER) WHEN 1 THEN data."B" WHEN 2 THEN data."C" WHEN 3 THEN data."D" WHEN 4 THEN data."E" WHEN 5 THEN data."F" END FROM rate_card_00 AS data WHERE data.row_num = (3) + CAST(floor((SELECT data.row_num - (3) + 1 FROM rate_card_00 AS data WHERE data.row_num BETWEEN 3 AND 7 AND lower(data."A_txt") = lower(params.inputs_b9_txt) ORDER BY data.row_num LIMIT 1)) AS INTEGER) - 1) ELSE base."B" END AS "B", base."C", base."D", base."E", base."F", base."H", base."I" FROM rate_card_00 AS base CROSS JOIN ( SELECT (SELECT "B_txt" FROM inputs_06 WHERE row_num = 9) AS inputs_b9_txt, (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- RateCard!B11: Base rate (single, 1 cells) -- Excel: =_xlfn.XLOOKUP(Inputs!B5,H3:H7,I3:I7,"n/a") CREATE TABLE rate_card_02 AS SELECT base.row_num, base."A_txt", CASE WHEN base.row_num = 11 THEN COALESCE((SELECT data."I" FROM rate_card_01 AS data WHERE data.row_num BETWEEN 3 AND 7 AND data."H" = COALESCE(params.term_months, 0) ORDER BY data.row_num LIMIT 1), NULL) ELSE base."B" END AS "B", base."C", base."D", base."E", base."F", base."H", base."I" FROM rate_card_01 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- RateCard!B12: Customer APR (single, 1 cells) -- Excel: =B11+B10/10000 CREATE TABLE rate_card_03 AS SELECT base.row_num, base."A_txt", CASE WHEN base.row_num = 12 THEN (params.rate_card_b11 + (params.rate_card_b10 / NULLIF(10000, 0))) ELSE base."B" END AS "B", base."C", base."D", base."E", base."F", base."H", base."I" FROM rate_card_02 AS base CROSS JOIN ( SELECT (SELECT "B" FROM rate_card_02 WHERE row_num = 11) AS rate_card_b11, (SELECT "B" FROM rate_card_02 WHERE row_num = 10) AS rate_card_b10 ) AS params; -- RateCard!B13: Monthly rate (single, 1 cells) -- Excel: =B12/12 CREATE TABLE rate_card_04 AS SELECT base.row_num, base."A_txt", CASE WHEN base.row_num = 13 THEN (params.apr / NULLIF(12, 0)) ELSE base."B" END AS "B", base."C", base."D", base."E", base."F", base."H", base."I" FROM rate_card_03 AS base CROSS JOIN ( SELECT (SELECT "B" FROM rate_card_03 WHERE row_num = 12) AS apr ) AS params; -- Schedule!B2: Date (single, 1 cells) -- Excel: =StartDate CREATE TABLE schedule_01 AS SELECT base.row_num, base."A", CASE WHEN base.row_num = 2 THEN COALESCE(params.start_date, 0) ELSE NULL END AS "B", base."E" FROM schedule_00 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 7) AS start_date ) AS params; -- Schedule!G2: Closing (single, 1 cells) -- Excel: =Financed CREATE TABLE schedule_02 AS SELECT base.row_num, base."A", base."B", base."E", CASE WHEN base.row_num = 2 THEN params.financed ELSE NULL END AS "G" FROM schedule_01 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 16) AS financed ) AS params; -- Schedule!I2: Cashflow (single, 1 cells) -- Excel: =-Financed+Inputs!B8 CREATE TABLE schedule_03 AS SELECT base.row_num, base."A", base."B", base."E", base."G", CASE WHEN base.row_num = 2 THEN ((-params.financed) + COALESCE(params.inputs_b8, 0)) ELSE NULL END AS "I" FROM schedule_02 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 16) AS financed, (SELECT "B" FROM inputs_06 WHERE row_num = 8) AS inputs_b8 ) AS params; -- Schedule!B3:B74: Date (column, 72 cells) -- Excel: =EDATE(StartDate,A3) -- pattern (R1C1): =EDATE(StartDate,RC[-1]) CREATE TABLE schedule_04 AS SELECT base.row_num, base."A", CASE WHEN base.row_num BETWEEN 3 AND 74 THEN xl_edate(COALESCE(params.start_date, 0), COALESCE(base."A", 0)) ELSE base."B" END AS "B", base."E", base."G", base."I" FROM schedule_03 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 7) AS start_date ) AS params; -- Schedule!C3: Opening (single, 1 cells) -- Excel: =IF(A3<=TermMonths,G2,"") CREATE TABLE schedule_05 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 3 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g2 ELSE NULL END ELSE NULL END AS "C", base."E", base."G", base."I" FROM schedule_04 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_04 WHERE row_num = 2) AS schedule_g2 ) AS params; -- Schedule!D3:D74: Payment (column, 72 cells) -- Excel: =IF(A3<=TermMonths,-PMT(MonthlyRate,TermMonths,Financed,-Balloon),"") -- pattern (R1C1): =IF(RC[-3]<=TermMonths,-PMT(MonthlyRate,TermMonths,Financed,-Balloon),"") CREATE TABLE schedule_06 AS SELECT base.row_num, base."A", base."B", base."C", CASE WHEN base.row_num BETWEEN 3 AND 74 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (-xl_pmt(params.monthly_rate, COALESCE(params.term_months, 0), params.financed, (-params.balloon), 0)) ELSE NULL END ELSE NULL END AS "D", base."E", base."G", base."I" FROM schedule_05 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "B" FROM rate_card_04 WHERE row_num = 13) AS monthly_rate, (SELECT "B" FROM inputs_06 WHERE row_num = 16) AS financed, (SELECT "B" FROM inputs_06 WHERE row_num = 17) AS balloon ) AS params; -- Schedule!E3:E29: Interest (column, 27 cells) -- Excel: =IF(A3<=TermMonths,-IPMT(MonthlyRate,A3,TermMonths,Financed,-Balloon),"") -- pattern (R1C1): =IF(RC[-4]<=TermMonths,-IPMT(MonthlyRate,RC[-4],TermMonths,Financed,-Balloon),"") CREATE TABLE schedule_07 AS SELECT base.row_num, base."A", base."B", base."C", base."D", CASE WHEN base.row_num BETWEEN 3 AND 29 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (-xl_ipmt(params.monthly_rate, COALESCE(base."A", 0), COALESCE(params.term_months, 0), params.financed, (-params.balloon), 0)) ELSE NULL END ELSE base."E" END AS "E", base."G", base."I" FROM schedule_06 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "B" FROM rate_card_04 WHERE row_num = 13) AS monthly_rate, (SELECT "B" FROM inputs_06 WHERE row_num = 16) AS financed, (SELECT "B" FROM inputs_06 WHERE row_num = 17) AS balloon ) AS params; -- Schedule!F3:F74: Principal (column, 72 cells) -- Excel: =IF(A3<=TermMonths,-PPMT(MonthlyRate,A3,TermMonths,Financed,-Balloon),"") -- pattern (R1C1): =IF(RC[-5]<=TermMonths,-PPMT(MonthlyRate,RC[-5],TermMonths,Financed,-Balloon),"") CREATE TABLE schedule_08 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", CASE WHEN base.row_num BETWEEN 3 AND 74 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (-xl_ppmt(params.monthly_rate, COALESCE(base."A", 0), COALESCE(params.term_months, 0), params.financed, (-params.balloon), 0)) ELSE NULL END ELSE NULL END AS "F", base."G", base."I" FROM schedule_07 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "B" FROM rate_card_04 WHERE row_num = 13) AS monthly_rate, (SELECT "B" FROM inputs_06 WHERE row_num = 16) AS financed, (SELECT "B" FROM inputs_06 WHERE row_num = 17) AS balloon ) AS params; -- Schedule!G3: Closing (single, 1 cells) -- Excel: =IF(A3<=TermMonths,C3-F3,"") CREATE TABLE schedule_09 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 3 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."I" FROM schedule_08 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!H3: Cumulative interest (single, 1 cells) -- Excel: =IF(A3<=TermMonths,E3,"") CREATE TABLE schedule_10 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", base."G", CASE WHEN base.row_num = 3 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN base."E" ELSE NULL END ELSE NULL END AS "H", base."I" FROM schedule_09 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!I3:I74: Cashflow (column, 72 cells) -- Excel: =IF(A3<=TermMonths,D3+IF(A3=TermMonths,Balloon,0),0) -- pattern (R1C1): =IF(RC[-8]<=TermMonths,RC[-5]+IF(RC[-8]=TermMonths,Balloon,0),0) CREATE TABLE schedule_11 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", base."G", base."H", CASE WHEN base.row_num BETWEEN 3 AND 74 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."D" + CASE WHEN (COALESCE(base."A", 0) = COALESCE(params.term_months, 0)) THEN params.balloon ELSE 0 END) ELSE 0 END ELSE base."I" END AS "I" FROM schedule_10 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "B" FROM inputs_06 WHERE row_num = 17) AS balloon ) AS params; -- Schedule!C4: Opening (single, 1 cells) -- Excel: =IF(A4<=TermMonths,G3,"") CREATE TABLE schedule_12 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 4 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g3 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_11 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_11 WHERE row_num = 3) AS schedule_g3 ) AS params; -- Schedule!G4: Closing (single, 1 cells) -- Excel: =IF(A4<=TermMonths,C4-F4,"") CREATE TABLE schedule_13 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 4 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_12 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C5: Opening (single, 1 cells) -- Excel: =IF(A5<=TermMonths,G4,"") CREATE TABLE schedule_14 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 5 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g4 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_13 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_13 WHERE row_num = 4) AS schedule_g4 ) AS params; -- Schedule!G5: Closing (single, 1 cells) -- Excel: =IF(A5<=TermMonths,C5-F5,"") CREATE TABLE schedule_15 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 5 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_14 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C6: Opening (single, 1 cells) -- Excel: =IF(A6<=TermMonths,G5,"") CREATE TABLE schedule_16 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 6 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g5 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_15 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_15 WHERE row_num = 5) AS schedule_g5 ) AS params; -- Schedule!G6: Closing (single, 1 cells) -- Excel: =IF(A6<=TermMonths,C6-F6,"") CREATE TABLE schedule_17 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 6 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_16 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C7: Opening (single, 1 cells) -- Excel: =IF(A7<=TermMonths,G6,"") CREATE TABLE schedule_18 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 7 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g6 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_17 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_17 WHERE row_num = 6) AS schedule_g6 ) AS params; -- Schedule!G7: Closing (single, 1 cells) -- Excel: =IF(A7<=TermMonths,C7-F7,"") CREATE TABLE schedule_19 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 7 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_18 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C8 (single, 1 cells) -- Excel: =IF(A8<=TermMonths,G7,"") CREATE TABLE schedule_20 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 8 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g7 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_19 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_19 WHERE row_num = 7) AS schedule_g7 ) AS params; -- Schedule!G8 (single, 1 cells) -- Excel: =IF(A8<=TermMonths,C8-F8,"") CREATE TABLE schedule_21 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 8 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_20 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C9 (single, 1 cells) -- Excel: =IF(A9<=TermMonths,G8,"") CREATE TABLE schedule_22 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 9 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g8 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_21 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_21 WHERE row_num = 8) AS schedule_g8 ) AS params; -- Schedule!G9 (single, 1 cells) -- Excel: =IF(A9<=TermMonths,C9-F9,"") CREATE TABLE schedule_23 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 9 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_22 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C10 (single, 1 cells) -- Excel: =IF(A10<=TermMonths,G9,"") CREATE TABLE schedule_24 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 10 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g9 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_23 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_23 WHERE row_num = 9) AS schedule_g9 ) AS params; -- Schedule!G10 (single, 1 cells) -- Excel: =IF(A10<=TermMonths,C10-F10,"") CREATE TABLE schedule_25 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 10 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_24 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C11 (single, 1 cells) -- Excel: =IF(A11<=TermMonths,G10,"") CREATE TABLE schedule_26 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 11 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g10 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_25 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_25 WHERE row_num = 10) AS schedule_g10 ) AS params; -- Schedule!G11 (single, 1 cells) -- Excel: =IF(A11<=TermMonths,C11-F11,"") CREATE TABLE schedule_27 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 11 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_26 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C12 (single, 1 cells) -- Excel: =IF(A12<=TermMonths,G11,"") CREATE TABLE schedule_28 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 12 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g11 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_27 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_27 WHERE row_num = 11) AS schedule_g11 ) AS params; -- Schedule!G12 (single, 1 cells) -- Excel: =IF(A12<=TermMonths,C12-F12,"") CREATE TABLE schedule_29 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 12 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_28 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C13 (single, 1 cells) -- Excel: =IF(A13<=TermMonths,G12,"") CREATE TABLE schedule_30 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 13 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g12 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_29 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_29 WHERE row_num = 12) AS schedule_g12 ) AS params; -- Schedule!G13 (single, 1 cells) -- Excel: =IF(A13<=TermMonths,C13-F13,"") CREATE TABLE schedule_31 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 13 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_30 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C14 (single, 1 cells) -- Excel: =IF(A14<=TermMonths,G13,"") CREATE TABLE schedule_32 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 14 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g13 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_31 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_31 WHERE row_num = 13) AS schedule_g13 ) AS params; -- Schedule!G14 (single, 1 cells) -- Excel: =IF(A14<=TermMonths,C14-F14,"") CREATE TABLE schedule_33 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 14 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_32 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C15 (single, 1 cells) -- Excel: =IF(A15<=TermMonths,G14,"") CREATE TABLE schedule_34 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 15 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g14 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_33 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_33 WHERE row_num = 14) AS schedule_g14 ) AS params; -- Schedule!G15 (single, 1 cells) -- Excel: =IF(A15<=TermMonths,C15-F15,"") CREATE TABLE schedule_35 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 15 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_34 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C16 (single, 1 cells) -- Excel: =IF(A16<=TermMonths,G15,"") CREATE TABLE schedule_36 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 16 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g15 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_35 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_35 WHERE row_num = 15) AS schedule_g15 ) AS params; -- Schedule!G16 (single, 1 cells) -- Excel: =IF(A16<=TermMonths,C16-F16,"") CREATE TABLE schedule_37 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 16 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_36 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C17 (single, 1 cells) -- Excel: =IF(A17<=TermMonths,G16,"") CREATE TABLE schedule_38 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 17 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g16 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_37 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_37 WHERE row_num = 16) AS schedule_g16 ) AS params; -- Schedule!G17 (single, 1 cells) -- Excel: =IF(A17<=TermMonths,C17-F17,"") CREATE TABLE schedule_39 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 17 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_38 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C18 (single, 1 cells) -- Excel: =IF(A18<=TermMonths,G17,"") CREATE TABLE schedule_40 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 18 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g17 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_39 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_39 WHERE row_num = 17) AS schedule_g17 ) AS params; -- Schedule!G18 (single, 1 cells) -- Excel: =IF(A18<=TermMonths,C18-F18,"") CREATE TABLE schedule_41 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 18 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_40 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C19 (single, 1 cells) -- Excel: =IF(A19<=TermMonths,G18,"") CREATE TABLE schedule_42 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 19 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g18 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_41 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_41 WHERE row_num = 18) AS schedule_g18 ) AS params; -- Schedule!G19 (single, 1 cells) -- Excel: =IF(A19<=TermMonths,C19-F19,"") CREATE TABLE schedule_43 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 19 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_42 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C20 (single, 1 cells) -- Excel: =IF(A20<=TermMonths,G19,"") CREATE TABLE schedule_44 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 20 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g19 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_43 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_43 WHERE row_num = 19) AS schedule_g19 ) AS params; -- Schedule!G20 (single, 1 cells) -- Excel: =IF(A20<=TermMonths,C20-F20,"") CREATE TABLE schedule_45 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 20 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_44 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C21 (single, 1 cells) -- Excel: =IF(A21<=TermMonths,G20,"") CREATE TABLE schedule_46 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 21 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g20 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_45 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_45 WHERE row_num = 20) AS schedule_g20 ) AS params; -- Schedule!G21 (single, 1 cells) -- Excel: =IF(A21<=TermMonths,C21-F21,"") CREATE TABLE schedule_47 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 21 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_46 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C22 (single, 1 cells) -- Excel: =IF(A22<=TermMonths,G21,"") CREATE TABLE schedule_48 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 22 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g21 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_47 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_47 WHERE row_num = 21) AS schedule_g21 ) AS params; -- Schedule!G22 (single, 1 cells) -- Excel: =IF(A22<=TermMonths,C22-F22,"") CREATE TABLE schedule_49 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 22 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_48 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C23 (single, 1 cells) -- Excel: =IF(A23<=TermMonths,G22,"") CREATE TABLE schedule_50 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 23 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g22 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_49 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_49 WHERE row_num = 22) AS schedule_g22 ) AS params; -- Schedule!G23 (single, 1 cells) -- Excel: =IF(A23<=TermMonths,C23-F23,"") CREATE TABLE schedule_51 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 23 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_50 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C24 (single, 1 cells) -- Excel: =IF(A24<=TermMonths,G23,"") CREATE TABLE schedule_52 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 24 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g23 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_51 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_51 WHERE row_num = 23) AS schedule_g23 ) AS params; -- Schedule!G24 (single, 1 cells) -- Excel: =IF(A24<=TermMonths,C24-F24,"") CREATE TABLE schedule_53 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 24 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_52 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C25 (single, 1 cells) -- Excel: =IF(A25<=TermMonths,G24,"") CREATE TABLE schedule_54 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 25 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g24 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_53 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_53 WHERE row_num = 24) AS schedule_g24 ) AS params; -- Schedule!G25 (single, 1 cells) -- Excel: =IF(A25<=TermMonths,C25-F25,"") CREATE TABLE schedule_55 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 25 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_54 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C26 (single, 1 cells) -- Excel: =IF(A26<=TermMonths,G25,"") CREATE TABLE schedule_56 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 26 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g25 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_55 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_55 WHERE row_num = 25) AS schedule_g25 ) AS params; -- Schedule!G26 (single, 1 cells) -- Excel: =IF(A26<=TermMonths,C26-F26,"") CREATE TABLE schedule_57 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 26 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_56 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C27 (single, 1 cells) -- Excel: =IF(A27<=TermMonths,G26,"") CREATE TABLE schedule_58 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 27 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g26 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_57 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_57 WHERE row_num = 26) AS schedule_g26 ) AS params; -- Schedule!G27 (single, 1 cells) -- Excel: =IF(A27<=TermMonths,C27-F27,"") CREATE TABLE schedule_59 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 27 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_58 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C28 (single, 1 cells) -- Excel: =IF(A28<=TermMonths,G27,"") CREATE TABLE schedule_60 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 28 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g27 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_59 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_59 WHERE row_num = 27) AS schedule_g27 ) AS params; -- Schedule!G28 (single, 1 cells) -- Excel: =IF(A28<=TermMonths,C28-F28,"") CREATE TABLE schedule_61 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 28 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_60 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C29 (single, 1 cells) -- Excel: =IF(A29<=TermMonths,G28,"") CREATE TABLE schedule_62 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 29 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g28 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_61 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_61 WHERE row_num = 28) AS schedule_g28 ) AS params; -- Schedule!G29 (single, 1 cells) -- Excel: =IF(A29<=TermMonths,C29-F29,"") CREATE TABLE schedule_63 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 29 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_62 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C30 (single, 1 cells) -- Excel: =IF(A30<=TermMonths,G29,"") CREATE TABLE schedule_64 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 30 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g29 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_63 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_63 WHERE row_num = 29) AS schedule_g29 ) AS params; -- Schedule!G30 (single, 1 cells) -- Excel: =IF(A30<=TermMonths,C30-F30,"") CREATE TABLE schedule_65 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 30 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_64 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C31 (single, 1 cells) -- Excel: =IF(A31<=TermMonths,G30,"") CREATE TABLE schedule_66 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 31 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g30 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_65 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_65 WHERE row_num = 30) AS schedule_g30 ) AS params; -- Schedule!E31:E74 (column, 44 cells) -- Excel: =IF(A31<=TermMonths,-IPMT(MonthlyRate,A31,TermMonths,Financed,-Balloon),"") -- pattern (R1C1): =IF(RC[-4]<=TermMonths,-IPMT(MonthlyRate,RC[-4],TermMonths,Financed,-Balloon),"") CREATE TABLE schedule_67 AS SELECT base.row_num, base."A", base."B", base."C", base."D", CASE WHEN base.row_num BETWEEN 31 AND 74 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (-xl_ipmt(params.monthly_rate, COALESCE(base."A", 0), COALESCE(params.term_months, 0), params.financed, (-params.balloon), 0)) ELSE NULL END ELSE base."E" END AS "E", base."F", base."G", base."H", base."I" FROM schedule_66 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "B" FROM rate_card_04 WHERE row_num = 13) AS monthly_rate, (SELECT "B" FROM inputs_06 WHERE row_num = 16) AS financed, (SELECT "B" FROM inputs_06 WHERE row_num = 17) AS balloon ) AS params; -- Schedule!H4:H74: Cumulative interest (column, 71 cells) -- Excel: =IF(A4<=TermMonths,H3+E4,"") -- pattern (R1C1): =IF(RC[-7]<=TermMonths,R[-1]C+RC[-3],"") -- a running total: each row reads the row above, so the column is computed by a recursive query CREATE TABLE schedule_68 AS WITH RECURSIVE recur AS ( SELECT base.row_num, CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (prev."H" + COALESCE(base."E", 0)) ELSE NULL END AS "H" FROM schedule_67 AS base LEFT JOIN schedule_67 AS prev ON prev.row_num = base.row_num - 1 CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params WHERE base.row_num = 4 UNION ALL SELECT base.row_num, CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (prev."H" + COALESCE(base."E", 0)) ELSE NULL END AS "H" FROM recur AS prev JOIN schedule_67 AS base ON base.row_num = prev.row_num + 1 CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params WHERE base.row_num <= 74 ) SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", base."G", CASE WHEN base.row_num BETWEEN 4 AND 74 THEN recur."H" ELSE base."H" END AS "H", base."I" FROM schedule_67 AS base LEFT JOIN recur ON recur.row_num = base.row_num; -- Schedule!G31 (single, 1 cells) -- Excel: =IF(A31<=TermMonths,C31-F31,"") CREATE TABLE schedule_69 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 31 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_68 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C32 (single, 1 cells) -- Excel: =IF(A32<=TermMonths,G31,"") CREATE TABLE schedule_70 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 32 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g31 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_69 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_69 WHERE row_num = 31) AS schedule_g31 ) AS params; -- Schedule!G32 (single, 1 cells) -- Excel: =IF(A32<=TermMonths,C32-F32,"") CREATE TABLE schedule_71 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 32 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_70 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C33 (single, 1 cells) -- Excel: =IF(A33<=TermMonths,G32,"") CREATE TABLE schedule_72 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 33 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g32 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_71 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_71 WHERE row_num = 32) AS schedule_g32 ) AS params; -- Schedule!G33 (single, 1 cells) -- Excel: =IF(A33<=TermMonths,C33-F33,"") CREATE TABLE schedule_73 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 33 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_72 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C34 (single, 1 cells) -- Excel: =IF(A34<=TermMonths,G33,"") CREATE TABLE schedule_74 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 34 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g33 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_73 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_73 WHERE row_num = 33) AS schedule_g33 ) AS params; -- Schedule!G34 (single, 1 cells) -- Excel: =IF(A34<=TermMonths,C34-F34,"") CREATE TABLE schedule_75 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 34 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_74 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C35 (single, 1 cells) -- Excel: =IF(A35<=TermMonths,G34,"") CREATE TABLE schedule_76 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 35 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g34 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_75 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_75 WHERE row_num = 34) AS schedule_g34 ) AS params; -- Schedule!G35 (single, 1 cells) -- Excel: =IF(A35<=TermMonths,C35-F35,"") CREATE TABLE schedule_77 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 35 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_76 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C36 (single, 1 cells) -- Excel: =IF(A36<=TermMonths,G35,"") CREATE TABLE schedule_78 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 36 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g35 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_77 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_77 WHERE row_num = 35) AS schedule_g35 ) AS params; -- Schedule!G36 (single, 1 cells) -- Excel: =IF(A36<=TermMonths,C36-F36,"") CREATE TABLE schedule_79 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 36 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_78 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C37 (single, 1 cells) -- Excel: =IF(A37<=TermMonths,G36,"") CREATE TABLE schedule_80 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 37 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g36 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_79 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_79 WHERE row_num = 36) AS schedule_g36 ) AS params; -- Schedule!G37 (single, 1 cells) -- Excel: =IF(A37<=TermMonths,C37-F37,"") CREATE TABLE schedule_81 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 37 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_80 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C38 (single, 1 cells) -- Excel: =IF(A38<=TermMonths,G37,"") CREATE TABLE schedule_82 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 38 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g37 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_81 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_81 WHERE row_num = 37) AS schedule_g37 ) AS params; -- Schedule!G38 (single, 1 cells) -- Excel: =IF(A38<=TermMonths,C38-F38,"") CREATE TABLE schedule_83 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 38 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_82 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C39 (single, 1 cells) -- Excel: =IF(A39<=TermMonths,G38,"") CREATE TABLE schedule_84 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 39 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g38 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_83 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_83 WHERE row_num = 38) AS schedule_g38 ) AS params; -- Schedule!G39 (single, 1 cells) -- Excel: =IF(A39<=TermMonths,C39-F39,"") CREATE TABLE schedule_85 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 39 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_84 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C40 (single, 1 cells) -- Excel: =IF(A40<=TermMonths,G39,"") CREATE TABLE schedule_86 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 40 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g39 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_85 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_85 WHERE row_num = 39) AS schedule_g39 ) AS params; -- Schedule!G40 (single, 1 cells) -- Excel: =IF(A40<=TermMonths,C40-F40,"") CREATE TABLE schedule_87 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 40 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_86 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C41 (single, 1 cells) -- Excel: =IF(A41<=TermMonths,G40,"") CREATE TABLE schedule_88 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 41 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g40 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_87 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_87 WHERE row_num = 40) AS schedule_g40 ) AS params; -- Schedule!G41 (single, 1 cells) -- Excel: =IF(A41<=TermMonths,C41-F41,"") CREATE TABLE schedule_89 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 41 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_88 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C42 (single, 1 cells) -- Excel: =IF(A42<=TermMonths,G41,"") CREATE TABLE schedule_90 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 42 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g41 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_89 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_89 WHERE row_num = 41) AS schedule_g41 ) AS params; -- Schedule!G42 (single, 1 cells) -- Excel: =IF(A42<=TermMonths,C42-F42,"") CREATE TABLE schedule_91 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 42 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_90 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C43 (single, 1 cells) -- Excel: =IF(A43<=TermMonths,G42,"") CREATE TABLE schedule_92 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 43 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g42 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_91 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_91 WHERE row_num = 42) AS schedule_g42 ) AS params; -- Schedule!G43 (single, 1 cells) -- Excel: =IF(A43<=TermMonths,C43-F43,"") CREATE TABLE schedule_93 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 43 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_92 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C44 (single, 1 cells) -- Excel: =IF(A44<=TermMonths,G43,"") CREATE TABLE schedule_94 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 44 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g43 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_93 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_93 WHERE row_num = 43) AS schedule_g43 ) AS params; -- Schedule!G44 (single, 1 cells) -- Excel: =IF(A44<=TermMonths,C44-F44,"") CREATE TABLE schedule_95 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 44 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_94 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C45 (single, 1 cells) -- Excel: =IF(A45<=TermMonths,G44,"") CREATE TABLE schedule_96 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 45 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g44 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_95 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_95 WHERE row_num = 44) AS schedule_g44 ) AS params; -- Schedule!G45 (single, 1 cells) -- Excel: =IF(A45<=TermMonths,C45-F45,"") CREATE TABLE schedule_97 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 45 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_96 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C46 (single, 1 cells) -- Excel: =IF(A46<=TermMonths,G45,"") CREATE TABLE schedule_98 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 46 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g45 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_97 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_97 WHERE row_num = 45) AS schedule_g45 ) AS params; -- Schedule!G46 (single, 1 cells) -- Excel: =IF(A46<=TermMonths,C46-F46,"") CREATE TABLE schedule_99 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 46 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_98 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C47 (single, 1 cells) -- Excel: =IF(A47<=TermMonths,G46,"") CREATE TABLE schedule_100 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 47 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g46 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_99 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_99 WHERE row_num = 46) AS schedule_g46 ) AS params; -- Schedule!G47 (single, 1 cells) -- Excel: =IF(A47<=TermMonths,C47-F47,"") CREATE TABLE schedule_101 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 47 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_100 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C48 (single, 1 cells) -- Excel: =IF(A48<=TermMonths,G47,"") CREATE TABLE schedule_102 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 48 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g47 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_101 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_101 WHERE row_num = 47) AS schedule_g47 ) AS params; -- Schedule!G48 (single, 1 cells) -- Excel: =IF(A48<=TermMonths,C48-F48,"") CREATE TABLE schedule_103 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 48 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_102 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C49 (single, 1 cells) -- Excel: =IF(A49<=TermMonths,G48,"") CREATE TABLE schedule_104 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 49 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g48 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_103 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_103 WHERE row_num = 48) AS schedule_g48 ) AS params; -- Schedule!G49 (single, 1 cells) -- Excel: =IF(A49<=TermMonths,C49-F49,"") CREATE TABLE schedule_105 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 49 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_104 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C50 (single, 1 cells) -- Excel: =IF(A50<=TermMonths,G49,"") CREATE TABLE schedule_106 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 50 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g49 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_105 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_105 WHERE row_num = 49) AS schedule_g49 ) AS params; -- Schedule!G50 (single, 1 cells) -- Excel: =IF(A50<=TermMonths,C50-F50,"") CREATE TABLE schedule_107 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 50 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_106 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C51 (single, 1 cells) -- Excel: =IF(A51<=TermMonths,G50,"") CREATE TABLE schedule_108 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 51 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g50 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_107 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_107 WHERE row_num = 50) AS schedule_g50 ) AS params; -- Schedule!G51 (single, 1 cells) -- Excel: =IF(A51<=TermMonths,C51-F51,"") CREATE TABLE schedule_109 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 51 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_108 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C52 (single, 1 cells) -- Excel: =IF(A52<=TermMonths,G51,"") CREATE TABLE schedule_110 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 52 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g51 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_109 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_109 WHERE row_num = 51) AS schedule_g51 ) AS params; -- Schedule!G52 (single, 1 cells) -- Excel: =IF(A52<=TermMonths,C52-F52,"") CREATE TABLE schedule_111 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 52 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_110 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C53 (single, 1 cells) -- Excel: =IF(A53<=TermMonths,G52,"") CREATE TABLE schedule_112 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 53 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g52 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_111 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_111 WHERE row_num = 52) AS schedule_g52 ) AS params; -- Schedule!G53 (single, 1 cells) -- Excel: =IF(A53<=TermMonths,C53-F53,"") CREATE TABLE schedule_113 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 53 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_112 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C54 (single, 1 cells) -- Excel: =IF(A54<=TermMonths,G53,"") CREATE TABLE schedule_114 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 54 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g53 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_113 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_113 WHERE row_num = 53) AS schedule_g53 ) AS params; -- Schedule!G54 (single, 1 cells) -- Excel: =IF(A54<=TermMonths,C54-F54,"") CREATE TABLE schedule_115 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 54 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_114 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C55 (single, 1 cells) -- Excel: =IF(A55<=TermMonths,G54,"") CREATE TABLE schedule_116 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 55 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g54 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_115 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_115 WHERE row_num = 54) AS schedule_g54 ) AS params; -- Schedule!G55 (single, 1 cells) -- Excel: =IF(A55<=TermMonths,C55-F55,"") CREATE TABLE schedule_117 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 55 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_116 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C56 (single, 1 cells) -- Excel: =IF(A56<=TermMonths,G55,"") CREATE TABLE schedule_118 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 56 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g55 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_117 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_117 WHERE row_num = 55) AS schedule_g55 ) AS params; -- Schedule!G56 (single, 1 cells) -- Excel: =IF(A56<=TermMonths,C56-F56,"") CREATE TABLE schedule_119 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 56 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_118 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C57 (single, 1 cells) -- Excel: =IF(A57<=TermMonths,G56,"") CREATE TABLE schedule_120 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 57 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g56 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_119 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_119 WHERE row_num = 56) AS schedule_g56 ) AS params; -- Schedule!G57 (single, 1 cells) -- Excel: =IF(A57<=TermMonths,C57-F57,"") CREATE TABLE schedule_121 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 57 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_120 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C58 (single, 1 cells) -- Excel: =IF(A58<=TermMonths,G57,"") CREATE TABLE schedule_122 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 58 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g57 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_121 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_121 WHERE row_num = 57) AS schedule_g57 ) AS params; -- Schedule!G58 (single, 1 cells) -- Excel: =IF(A58<=TermMonths,C58-F58,"") CREATE TABLE schedule_123 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 58 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_122 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C59 (single, 1 cells) -- Excel: =IF(A59<=TermMonths,G58,"") CREATE TABLE schedule_124 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 59 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g58 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_123 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_123 WHERE row_num = 58) AS schedule_g58 ) AS params; -- Schedule!G59 (single, 1 cells) -- Excel: =IF(A59<=TermMonths,C59-F59,"") CREATE TABLE schedule_125 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 59 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_124 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C60 (single, 1 cells) -- Excel: =IF(A60<=TermMonths,G59,"") CREATE TABLE schedule_126 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 60 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g59 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_125 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_125 WHERE row_num = 59) AS schedule_g59 ) AS params; -- Schedule!G60 (single, 1 cells) -- Excel: =IF(A60<=TermMonths,C60-F60,"") CREATE TABLE schedule_127 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 60 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_126 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C61 (single, 1 cells) -- Excel: =IF(A61<=TermMonths,G60,"") CREATE TABLE schedule_128 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 61 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g60 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_127 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_127 WHERE row_num = 60) AS schedule_g60 ) AS params; -- Schedule!G61 (single, 1 cells) -- Excel: =IF(A61<=TermMonths,C61-F61,"") CREATE TABLE schedule_129 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 61 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_128 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C62 (single, 1 cells) -- Excel: =IF(A62<=TermMonths,G61,"") CREATE TABLE schedule_130 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 62 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g61 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_129 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_129 WHERE row_num = 61) AS schedule_g61 ) AS params; -- Schedule!G62 (single, 1 cells) -- Excel: =IF(A62<=TermMonths,C62-F62,"") CREATE TABLE schedule_131 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 62 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_130 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C63 (single, 1 cells) -- Excel: =IF(A63<=TermMonths,G62,"") CREATE TABLE schedule_132 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 63 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g62 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_131 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_131 WHERE row_num = 62) AS schedule_g62 ) AS params; -- Schedule!G63 (single, 1 cells) -- Excel: =IF(A63<=TermMonths,C63-F63,"") CREATE TABLE schedule_133 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 63 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_132 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C64 (single, 1 cells) -- Excel: =IF(A64<=TermMonths,G63,"") CREATE TABLE schedule_134 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 64 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g63 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_133 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_133 WHERE row_num = 63) AS schedule_g63 ) AS params; -- Schedule!G64 (single, 1 cells) -- Excel: =IF(A64<=TermMonths,C64-F64,"") CREATE TABLE schedule_135 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 64 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_134 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C65 (single, 1 cells) -- Excel: =IF(A65<=TermMonths,G64,"") CREATE TABLE schedule_136 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 65 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g64 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_135 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_135 WHERE row_num = 64) AS schedule_g64 ) AS params; -- Schedule!G65 (single, 1 cells) -- Excel: =IF(A65<=TermMonths,C65-F65,"") CREATE TABLE schedule_137 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 65 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_136 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C66 (single, 1 cells) -- Excel: =IF(A66<=TermMonths,G65,"") CREATE TABLE schedule_138 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 66 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g65 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_137 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_137 WHERE row_num = 65) AS schedule_g65 ) AS params; -- Schedule!G66 (single, 1 cells) -- Excel: =IF(A66<=TermMonths,C66-F66,"") CREATE TABLE schedule_139 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 66 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_138 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C67 (single, 1 cells) -- Excel: =IF(A67<=TermMonths,G66,"") CREATE TABLE schedule_140 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 67 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g66 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_139 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_139 WHERE row_num = 66) AS schedule_g66 ) AS params; -- Schedule!G67 (single, 1 cells) -- Excel: =IF(A67<=TermMonths,C67-F67,"") CREATE TABLE schedule_141 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 67 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_140 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C68 (single, 1 cells) -- Excel: =IF(A68<=TermMonths,G67,"") CREATE TABLE schedule_142 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 68 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g67 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_141 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_141 WHERE row_num = 67) AS schedule_g67 ) AS params; -- Schedule!G68 (single, 1 cells) -- Excel: =IF(A68<=TermMonths,C68-F68,"") CREATE TABLE schedule_143 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 68 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_142 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C69 (single, 1 cells) -- Excel: =IF(A69<=TermMonths,G68,"") CREATE TABLE schedule_144 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 69 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g68 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_143 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_143 WHERE row_num = 68) AS schedule_g68 ) AS params; -- Schedule!G69 (single, 1 cells) -- Excel: =IF(A69<=TermMonths,C69-F69,"") CREATE TABLE schedule_145 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 69 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_144 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C70 (single, 1 cells) -- Excel: =IF(A70<=TermMonths,G69,"") CREATE TABLE schedule_146 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 70 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g69 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_145 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_145 WHERE row_num = 69) AS schedule_g69 ) AS params; -- Schedule!G70 (single, 1 cells) -- Excel: =IF(A70<=TermMonths,C70-F70,"") CREATE TABLE schedule_147 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 70 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_146 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C71 (single, 1 cells) -- Excel: =IF(A71<=TermMonths,G70,"") CREATE TABLE schedule_148 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 71 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g70 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_147 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_147 WHERE row_num = 70) AS schedule_g70 ) AS params; -- Schedule!G71 (single, 1 cells) -- Excel: =IF(A71<=TermMonths,C71-F71,"") CREATE TABLE schedule_149 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 71 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_148 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C72 (single, 1 cells) -- Excel: =IF(A72<=TermMonths,G71,"") CREATE TABLE schedule_150 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 72 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g71 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_149 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_149 WHERE row_num = 71) AS schedule_g71 ) AS params; -- Schedule!G72 (single, 1 cells) -- Excel: =IF(A72<=TermMonths,C72-F72,"") CREATE TABLE schedule_151 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 72 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_150 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C73 (single, 1 cells) -- Excel: =IF(A73<=TermMonths,G72,"") CREATE TABLE schedule_152 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 73 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g72 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_151 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_151 WHERE row_num = 72) AS schedule_g72 ) AS params; -- Schedule!G73 (single, 1 cells) -- Excel: =IF(A73<=TermMonths,C73-F73,"") CREATE TABLE schedule_153 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 73 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_152 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Schedule!C74 (single, 1 cells) -- Excel: =IF(A74<=TermMonths,G73,"") CREATE TABLE schedule_154 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 74 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN params.schedule_g73 ELSE NULL END ELSE base."C" END AS "C", base."D", base."E", base."F", base."G", base."H", base."I" FROM schedule_153 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "G" FROM schedule_153 WHERE row_num = 73) AS schedule_g73 ) AS params; -- Schedule!G74 (single, 1 cells) -- Excel: =IF(A74<=TermMonths,C74-F74,"") CREATE TABLE schedule_155 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", base."F", CASE WHEN base.row_num = 74 THEN CASE WHEN (COALESCE(base."A", 0) <= COALESCE(params.term_months, 0)) THEN (base."C" - base."F") ELSE NULL END ELSE base."G" END AS "G", base."H", base."I" FROM schedule_154 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Economics!B3: Monthly payment (single, 1 cells) -- Excel: =-PMT(MonthlyRate,TermMonths,Financed,-Balloon) CREATE TABLE economics_01 AS SELECT base.row_num, CASE WHEN base.row_num = 3 THEN (-xl_pmt(params.monthly_rate, COALESCE(params.term_months, 0), params.financed, (-params.balloon), 0)) ELSE NULL END AS "B" FROM economics_00 AS base CROSS JOIN ( SELECT (SELECT "B" FROM rate_card_04 WHERE row_num = 13) AS monthly_rate, (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "B" FROM inputs_06 WHERE row_num = 16) AS financed, (SELECT "B" FROM inputs_06 WHERE row_num = 17) AS balloon ) AS params; -- Economics!B4: Total interest (single, 1 cells) -- Excel: =SUM(Schedule!E3:E74) CREATE TABLE economics_02 AS SELECT base.row_num, CASE WHEN base.row_num = 4 THEN (COALESCE((SELECT COALESCE(SUM(data."E"), 0) FROM schedule_155 AS data WHERE data.row_num BETWEEN 3 AND 74), 0)) ELSE base."B" END AS "B" FROM economics_01 AS base; -- Economics!B5: Interest in first 12 months (single, 1 cells) -- Excel: =SUMPRODUCT((Schedule!A3:A74<=12)*Schedule!E3:E74) CREATE TABLE economics_03 AS SELECT base.row_num, CASE WHEN base.row_num = 5 THEN COALESCE((SELECT SUM((CASE WHEN data."A" <= 12 THEN 1 ELSE 0 END * COALESCE(data."E", 0))) FROM schedule_155 AS data WHERE data.row_num BETWEEN 3 AND 74), 0) ELSE base."B" END AS "B" FROM economics_02 AS base; -- Economics!B6: Largest interest payment (single, 1 cells) -- Excel: =_xlfn.MAXIFS(Schedule!E3:E74,Schedule!A3:A74,"<="&TermMonths) CREATE TABLE economics_04 AS SELECT base.row_num, CASE WHEN base.row_num = 6 THEN COALESCE((SELECT MAX(data."E") FROM schedule_155 AS data WHERE data.row_num BETWEEN 3 AND 74 AND (data."A" <= params.term_months)), 0) ELSE base."B" END AS "B" FROM economics_03 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Economics!B7: NPV at hurdle (single, 1 cells) -- Excel: =Schedule!I2+NPV(Hurdle/12,Schedule!I3:I74) CREATE TABLE economics_05 AS SELECT base.row_num, CASE WHEN base.row_num = 7 THEN (params.schedule_i2 + (SELECT SUM(data."I" / power(1 + (COALESCE(params.hurdle, 0) / NULLIF(12, 0)), data.row_num - (3) + 1)) FROM schedule_155 AS data WHERE data.row_num BETWEEN 3 AND 74)) ELSE base."B" END AS "B" FROM economics_04 AS base CROSS JOIN ( SELECT (SELECT "I" FROM schedule_155 WHERE row_num = 2) AS schedule_i2, (SELECT "B" FROM inputs_06 WHERE row_num = 12) AS hurdle ) AS params; -- NOT CONVERTED Economics!B8 =IRR(Schedule!I2:I74)*12 -- reason: IRR() needs an iterative solver, which SQL does not express -- NOT CONVERTED Economics!B9 =RATE(TermMonths,-B3,Financed-Inputs!B8,-Balloon)*12 -- reason: RATE() needs an iterative solver, which SQL does not express -- Economics!B10: Present value of payments (single, 1 cells) -- Excel: =PV(MonthlyRate,TermMonths,-B3,-Balloon) CREATE TABLE economics_06 AS SELECT base.row_num, CASE WHEN base.row_num = 10 THEN xl_pv(params.monthly_rate, COALESCE(params.term_months, 0), (-params.economics_b3), (-params.balloon), 0) ELSE base."B" END AS "B" FROM economics_05 AS base CROSS JOIN ( SELECT (SELECT "B" FROM rate_card_04 WHERE row_num = 13) AS monthly_rate, (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "B" FROM economics_05 WHERE row_num = 3) AS economics_b3, (SELECT "B" FROM inputs_06 WHERE row_num = 17) AS balloon ) AS params; -- Economics!B11: Future value of deposit at hurdle (single, 1 cells) -- Excel: =FV(Hurdle/12,TermMonths,0,-Inputs!B3*Inputs!B4) CREATE TABLE economics_07 AS SELECT base.row_num, CASE WHEN base.row_num = 11 THEN xl_fv((COALESCE(params.hurdle, 0) / NULLIF(12, 0)), COALESCE(params.term_months, 0), 0, ((-COALESCE(params.asset_cost, 0)) * COALESCE(params.inputs_b4, 0)), 0) ELSE base."B" END AS "B" FROM economics_06 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 12) AS hurdle, (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "B" FROM inputs_06 WHERE row_num = 3) AS asset_cost, (SELECT "B" FROM inputs_06 WHERE row_num = 4) AS inputs_b4 ) AS params; -- Economics!B12: Months to repay half (single, 1 cells) -- Excel: =NPER(MonthlyRate,-B3,Financed/2) CREATE TABLE economics_08 AS SELECT base.row_num, CASE WHEN base.row_num = 12 THEN xl_nper(params.monthly_rate, (-params.economics_b3), (params.financed / NULLIF(2, 0)), 0, 0) ELSE base."B" END AS "B" FROM economics_07 AS base CROSS JOIN ( SELECT (SELECT "B" FROM rate_card_04 WHERE row_num = 13) AS monthly_rate, (SELECT "B" FROM economics_07 WHERE row_num = 3) AS economics_b3, (SELECT "B" FROM inputs_06 WHERE row_num = 16) AS financed ) AS params; -- Economics!B13: Commission (single, 1 cells) -- Excel: =Financed*0.015 CREATE TABLE economics_09 AS SELECT base.row_num, CASE WHEN base.row_num = 13 THEN (params.financed * 0.015) ELSE base."B" END AS "B" FROM economics_08 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 16) AS financed ) AS params; -- Economics!B14: Interest (30/360 approximation) (single, 1 cells) -- Excel: =Financed*APR*TermMonths*30/360 CREATE TABLE economics_10 AS SELECT base.row_num, CASE WHEN base.row_num = 14 THEN ((((params.financed * params.apr) * COALESCE(params.term_months, 0)) * 30) / NULLIF(360, 0)) ELSE base."B" END AS "B" FROM economics_09 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 16) AS financed, (SELECT "B" FROM rate_card_04 WHERE row_num = 12) AS apr, (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Economics!B15: Fee yield (single, 1 cells) -- Excel: =Inputs!B8/Financed CREATE TABLE economics_11 AS SELECT base.row_num, CASE WHEN base.row_num = 15 THEN (COALESCE(params.inputs_b8, 0) / NULLIF(params.financed, 0)) ELSE base."B" END AS "B" FROM economics_10 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 8) AS inputs_b8, (SELECT "B" FROM inputs_06 WHERE row_num = 16) AS financed ) AS params; -- Sensitivity!B3:F7 (table, 25 cells) -- Excel: =-PMT((APR+$A3)/12,B$2,Financed,-Balloon) -- pattern (R1C1): =-PMT((APR+RC1)/12,R2C,Financed,-Balloon) CREATE TABLE sensitivity_01 AS SELECT base.row_num, base."A", CASE WHEN base.row_num BETWEEN 3 AND 7 THEN (-xl_pmt(((params.apr + COALESCE(base."A", 0)) / NULLIF(12, 0)), COALESCE(params.sensitivity_b2, 0), params.financed, (-params.balloon), 0)) ELSE base."B" END AS "B", CASE WHEN base.row_num BETWEEN 3 AND 7 THEN (-xl_pmt(((params.apr + COALESCE(base."A", 0)) / NULLIF(12, 0)), COALESCE(params.sensitivity_c2, 0), params.financed, (-params.balloon), 0)) ELSE base."C" END AS "C", CASE WHEN base.row_num BETWEEN 3 AND 7 THEN (-xl_pmt(((params.apr + COALESCE(base."A", 0)) / NULLIF(12, 0)), COALESCE(params.sensitivity_d2, 0), params.financed, (-params.balloon), 0)) ELSE base."D" END AS "D", CASE WHEN base.row_num BETWEEN 3 AND 7 THEN (-xl_pmt(((params.apr + COALESCE(base."A", 0)) / NULLIF(12, 0)), COALESCE(params.sensitivity_e2, 0), params.financed, (-params.balloon), 0)) ELSE base."E" END AS "E", CASE WHEN base.row_num BETWEEN 3 AND 7 THEN (-xl_pmt(((params.apr + COALESCE(base."A", 0)) / NULLIF(12, 0)), COALESCE(params.sensitivity_f2, 0), params.financed, (-params.balloon), 0)) ELSE base."F" END AS "F" FROM sensitivity_00 AS base CROSS JOIN ( SELECT (SELECT "B" FROM rate_card_04 WHERE row_num = 12) AS apr, (SELECT "B" FROM sensitivity_00 WHERE row_num = 2) AS sensitivity_b2, (SELECT "B" FROM inputs_06 WHERE row_num = 16) AS financed, (SELECT "B" FROM inputs_06 WHERE row_num = 17) AS balloon, (SELECT "C" FROM sensitivity_00 WHERE row_num = 2) AS sensitivity_c2, (SELECT "D" FROM sensitivity_00 WHERE row_num = 2) AS sensitivity_d2, (SELECT "E" FROM sensitivity_00 WHERE row_num = 2) AS sensitivity_e2, (SELECT "F" FROM sensitivity_00 WHERE row_num = 2) AS sensitivity_f2 ) AS params; -- Sensitivity!B8 (single, 1 cells) -- Excel: =-PMT((APR+A8)/12,B$2,Financed,-Balloon) CREATE TABLE sensitivity_02 AS SELECT base.row_num, base."A", CASE WHEN base.row_num = 8 THEN (-xl_pmt(((params.apr + COALESCE(base."A", 0)) / NULLIF(12, 0)), COALESCE(params.sensitivity_b2, 0), params.financed, (-params.balloon), 0)) ELSE base."B" END AS "B", base."C", base."D", base."E", base."F" FROM sensitivity_01 AS base CROSS JOIN ( SELECT (SELECT "B" FROM rate_card_04 WHERE row_num = 12) AS apr, (SELECT "B" FROM sensitivity_01 WHERE row_num = 2) AS sensitivity_b2, (SELECT "B" FROM inputs_06 WHERE row_num = 16) AS financed, (SELECT "B" FROM inputs_06 WHERE row_num = 17) AS balloon ) AS params; -- Sensitivity!C8 (single, 1 cells) -- Excel: =-PMT((APR+A8)/12,C$2,Financed,-Balloon) CREATE TABLE sensitivity_03 AS SELECT base.row_num, base."A", base."B", CASE WHEN base.row_num = 8 THEN (-xl_pmt(((params.apr + COALESCE(base."A", 0)) / NULLIF(12, 0)), COALESCE(params.sensitivity_c2, 0), params.financed, (-params.balloon), 0)) ELSE base."C" END AS "C", base."D", base."E", base."F" FROM sensitivity_02 AS base CROSS JOIN ( SELECT (SELECT "B" FROM rate_card_04 WHERE row_num = 12) AS apr, (SELECT "C" FROM sensitivity_02 WHERE row_num = 2) AS sensitivity_c2, (SELECT "B" FROM inputs_06 WHERE row_num = 16) AS financed, (SELECT "B" FROM inputs_06 WHERE row_num = 17) AS balloon ) AS params; -- Sensitivity!D8 (single, 1 cells) -- Excel: =-PMT((APR+A8)/12,D$2,Financed,-Balloon) CREATE TABLE sensitivity_04 AS SELECT base.row_num, base."A", base."B", base."C", CASE WHEN base.row_num = 8 THEN (-xl_pmt(((params.apr + COALESCE(base."A", 0)) / NULLIF(12, 0)), COALESCE(params.sensitivity_d2, 0), params.financed, (-params.balloon), 0)) ELSE base."D" END AS "D", base."E", base."F" FROM sensitivity_03 AS base CROSS JOIN ( SELECT (SELECT "B" FROM rate_card_04 WHERE row_num = 12) AS apr, (SELECT "D" FROM sensitivity_03 WHERE row_num = 2) AS sensitivity_d2, (SELECT "B" FROM inputs_06 WHERE row_num = 16) AS financed, (SELECT "B" FROM inputs_06 WHERE row_num = 17) AS balloon ) AS params; -- Sensitivity!E8 (single, 1 cells) -- Excel: =-PMT((APR+A8)/12,E$2,Financed,-Balloon) CREATE TABLE sensitivity_05 AS SELECT base.row_num, base."A", base."B", base."C", base."D", CASE WHEN base.row_num = 8 THEN (-xl_pmt(((params.apr + COALESCE(base."A", 0)) / NULLIF(12, 0)), COALESCE(params.sensitivity_e2, 0), params.financed, (-params.balloon), 0)) ELSE base."E" END AS "E", base."F" FROM sensitivity_04 AS base CROSS JOIN ( SELECT (SELECT "B" FROM rate_card_04 WHERE row_num = 12) AS apr, (SELECT "E" FROM sensitivity_04 WHERE row_num = 2) AS sensitivity_e2, (SELECT "B" FROM inputs_06 WHERE row_num = 16) AS financed, (SELECT "B" FROM inputs_06 WHERE row_num = 17) AS balloon ) AS params; -- Sensitivity!F8 (single, 1 cells) -- Excel: =-PMT((APR+A8)/12,F$2,Financed,-Balloon) CREATE TABLE sensitivity_06 AS SELECT base.row_num, base."A", base."B", base."C", base."D", base."E", CASE WHEN base.row_num = 8 THEN (-xl_pmt(((params.apr + COALESCE(base."A", 0)) / NULLIF(12, 0)), COALESCE(params.sensitivity_f2, 0), params.financed, (-params.balloon), 0)) ELSE base."F" END AS "F" FROM sensitivity_05 AS base CROSS JOIN ( SELECT (SELECT "B" FROM rate_card_04 WHERE row_num = 12) AS apr, (SELECT "F" FROM sensitivity_05 WHERE row_num = 2) AS sensitivity_f2, (SELECT "B" FROM inputs_06 WHERE row_num = 16) AS financed, (SELECT "B" FROM inputs_06 WHERE row_num = 17) AS balloon ) AS params; -- Sensitivity!B10: Cheapest option (single, 1 cells) -- Excel: =MIN(B3:F8) CREATE TABLE sensitivity_07 AS SELECT base.row_num, base."A", CASE WHEN base.row_num = 10 THEN COALESCE((SELECT least(MIN(data."B"), MIN(data."C"), MIN(data."D"), MIN(data."E"), MIN(data."F")) FROM sensitivity_06 AS data WHERE data.row_num BETWEEN 3 AND 8), 0) ELSE base."B" END AS "B", base."C", base."D", base."E", base."F" FROM sensitivity_06 AS base; -- Sensitivity!B11: Options under 1,000/month (single, 1 cells) -- Excel: =COUNTIF(B3:F8,"<1000") CREATE TABLE sensitivity_08 AS SELECT base.row_num, base."A", CASE WHEN base.row_num = 11 THEN (SELECT SUM(CASE WHEN (data."B" < 1000.0) THEN 1 ELSE 0 END) + SUM(CASE WHEN (data."C" < 1000.0) THEN 1 ELSE 0 END) + SUM(CASE WHEN (data."D" < 1000.0) THEN 1 ELSE 0 END) + SUM(CASE WHEN (data."E" < 1000.0) THEN 1 ELSE 0 END) + SUM(CASE WHEN (data."F" < 1000.0) THEN 1 ELSE 0 END) FROM sensitivity_07 AS data WHERE data.row_num BETWEEN 3 AND 8) ELSE base."B" END AS "B", base."C", base."D", base."E", base."F" FROM sensitivity_07 AS base; -- Summary!B3: Grade band (single, 1 cells) -- Excel: =_xlfn.IFS(Inputs!B9="A","Prime",Inputs!B9="B","Near prime",Inputs!B9="C","Standard",TRUE,"Sub prime") CREATE TABLE summary_01 AS SELECT base.row_num, CASE WHEN base.row_num = 3 THEN CASE WHEN (lower(params.inputs_b9_txt) = lower('A')) THEN 'Prime' WHEN (lower(params.inputs_b9_txt) = lower('B')) THEN 'Near prime' WHEN (lower(params.inputs_b9_txt) = lower('C')) THEN 'Standard' WHEN TRUE THEN 'Sub prime' END ELSE NULL END AS "B_txt" FROM summary_00 AS base CROSS JOIN ( SELECT (SELECT "B_txt" FROM inputs_06 WHERE row_num = 9) AS inputs_b9_txt ) AS params; -- Summary!B4: Product description (single, 1 cells) -- Excel: =_xlfn.SWITCH(Inputs!B10,"HP","Hire purchase","PCP","Personal contract purchase","LP","Lease purchase","Other") CREATE TABLE summary_02 AS SELECT base.row_num, CASE WHEN base.row_num = 4 THEN CASE WHEN (lower(params.inputs_b10_txt) = lower('HP')) THEN 'Hire purchase' WHEN (lower(params.inputs_b10_txt) = lower('PCP')) THEN 'Personal contract purchase' WHEN (lower(params.inputs_b10_txt) = lower('LP')) THEN 'Lease purchase' ELSE 'Other' END ELSE base."B_txt" END AS "B_txt" FROM summary_01 AS base CROSS JOIN ( SELECT (SELECT "B_txt" FROM inputs_06 WHERE row_num = 10) AS inputs_b10_txt ) AS params; -- Summary!B5: Quote line (single, 1 cells) -- Excel: =_xlfn.TEXTJOIN(" | ",TRUE,B4,TEXT(Economics!B3,"#,##0.00")&" per month",TermMonths&" months",TEXT(APR,"0.00%")&" APR") CREATE TABLE summary_03 AS SELECT base.row_num, CASE WHEN base.row_num = 5 THEN concat_ws(' | ', NULLIF(params.summary_b4_txt, ''), NULLIF(concat(format('{:,.2f}', xl_round(params.economics_b3, 2)), ' per month'), ''), NULLIF(concat(xl_text(params.term_months), ' months'), ''), NULLIF(concat(concat(printf('%.2f', xl_round(params.apr * 100, 2)), '%'), ' APR'), '')) ELSE base."B_txt" END AS "B_txt" FROM summary_02 AS base CROSS JOIN ( SELECT (SELECT "B_txt" FROM summary_02 WHERE row_num = 4) AS summary_b4_txt, (SELECT "B" FROM economics_11 WHERE row_num = 3) AS economics_b3, (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months, (SELECT "B" FROM rate_card_04 WHERE row_num = 12) AS apr ) AS params; -- Summary!B6: Payments above 900 (single, 1 cells) -- Excel: =COUNTIF(Schedule!D3:D74,">900") CREATE TABLE summary_04 AS SELECT base.row_num, CASE WHEN base.row_num = 6 THEN (SELECT COUNT(*) FROM schedule_155 AS data WHERE data.row_num BETWEEN 3 AND 74 AND (data."D" > 900.0)) ELSE NULL END AS "B", base."B_txt" FROM summary_03 AS base; -- Summary!B7: Within policy (single, 1 cells) -- Excel: =AND(APR<0.12,Inputs!B4>=0.1,TermMonths<=60) CREATE TABLE summary_05 AS SELECT base.row_num, base."B", base."B_txt", CASE WHEN base.row_num = 7 THEN ((params.apr < 0.12) AND (COALESCE(params.inputs_b4, 0) >= 0.1) AND (COALESCE(params.term_months, 0) <= 60)) ELSE NULL END AS "B_bool" FROM summary_04 AS base CROSS JOIN ( SELECT (SELECT "B" FROM rate_card_04 WHERE row_num = 12) AS apr, (SELECT "B" FROM inputs_06 WHERE row_num = 4) AS inputs_b4, (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Summary!B8: Approval (single, 1 cells) -- Excel: =IF(B7,"Auto-approve",IF(Inputs!B9="E","Decline","Refer")) CREATE TABLE summary_06 AS SELECT base.row_num, base."B", CASE WHEN base.row_num = 8 THEN CASE WHEN params.summary_b7_bool THEN 'Auto-approve' ELSE CASE WHEN (lower(params.inputs_b9_txt) = lower('E')) THEN 'Decline' ELSE 'Refer' END END ELSE base."B_txt" END AS "B_txt", base."B_bool" FROM summary_05 AS base CROSS JOIN ( SELECT (SELECT "B_bool" FROM summary_05 WHERE row_num = 7) AS summary_b7_bool, (SELECT "B_txt" FROM inputs_06 WHERE row_num = 9) AS inputs_b9_txt ) AS params; -- Summary!B9: Days in schedule (single, 1 cells) -- Excel: =Schedule!B74-Schedule!B2 CREATE TABLE summary_07 AS SELECT base.row_num, CASE WHEN base.row_num = 9 THEN (params.schedule_b74 - params.schedule_b2) ELSE base."B" END AS "B", base."B_txt", base."B_bool" FROM summary_06 AS base CROSS JOIN ( SELECT (SELECT "B" FROM schedule_155 WHERE row_num = 74) AS schedule_b74, (SELECT "B" FROM schedule_155 WHERE row_num = 2) AS schedule_b2 ) AS params; -- Summary!B10: Average balance (single, 1 cells) -- Excel: =AVERAGEIF(Schedule!A3:A74,"<="&TermMonths,Schedule!C3:C74) CREATE TABLE summary_08 AS SELECT base.row_num, CASE WHEN base.row_num = 10 THEN (SELECT AVG(data."C") FROM schedule_155 AS data WHERE data.row_num BETWEEN 3 AND 74 AND (data."A" <= params.term_months)) ELSE base."B" END AS "B", base."B_txt", base."B_bool" FROM summary_07 AS base CROSS JOIN ( SELECT (SELECT "B" FROM inputs_06 WHERE row_num = 5) AS term_months ) AS params; -- Final state of every sheet CREATE VIEW "inputs" AS SELECT * FROM inputs_06; CREATE VIEW "rate_card" AS SELECT * FROM rate_card_04; CREATE VIEW "schedule" AS SELECT * FROM schedule_155; CREATE VIEW "economics" AS SELECT * FROM economics_11; CREATE VIEW "sensitivity" AS SELECT * FROM sensitivity_08; CREATE VIEW "summary" AS SELECT * FROM summary_08;