Last active
September 24, 2024 17:28
-
-
Save kam-daniel/de192691da49a83a9fcc700ab8c448a6 to your computer and use it in GitHub Desktop.
Postgres view column getter with casting for migrating views to functions and maintaining legacy
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
WITH | |
my_table_name AS | |
( | |
SELECT 'v_forecast_summary' AS table_name | |
) | |
, colpad AS | |
( | |
SELECT | |
MAX(length(columns.column_name)) AS pad | |
FROM information_schema.columns | |
WHERE columns.table_name LIKE (SELECT table_name FROM my_table_name) | |
) | |
, datatypepad AS | |
( | |
SELECT MAX(length(columns.data_type || COALESCE('(' || columns.character_maximum_length || ')',''))) AS pad | |
FROM information_schema.columns | |
WHERE columns.table_name LIKE (SELECT table_name FROM my_table_name) | |
) | |
SELECT ' ' || (SELECT table_name FROM my_table_name) || '.' || | |
STRING_AGG | |
( | |
rpad | |
( | |
columns.column_name | |
, ( | |
SELECT pad FROM colpad | |
) | |
, ' ' | |
) || ' ::' || RPAD(columns.data_type || COALESCE('(' || columns.character_maximum_length || ')',''),(SELECT pad FROM datatypepad)) || ' AS ' || columns.column_name | |
, E'\n, ' || (SELECT table_name FROM my_table_name) || '.' ORDER BY columns.ordinal_position | |
) AS column_names | |
FROM information_schema.columns | |
WHERE columns.table_name = (SELECT table_name FROM my_table_name); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment