sql_formatter
sql_formatter copied to clipboard
Formatting of CTEs
Is your feature request related to a problem? Please describe
Thanks for this package! Is it possible to have the start of a CTE definition on a new line?
The current behaviour is that a CTE is a continuation of the same line, as in the following example:
print(
sql_formatter.core.format_sql("""
WITH
first_cte AS (
SELECT var
FROM table1
),
second_cte AS (
SELECT var
FROM table2
)
SELECT a.var
FROM first_cte
JOIN second_cte USING (var)
""")
)
which leads to the following output:
with first_cte as (SELECT var
FROM table1), second_cte as (SELECT var
FROM table2)
SELECT a.var
FROM first_cte join second_cte using (var)
Describe the solution you'd like
The desired output would be:
WITH
first_cte as (
SELECT var
FROM table1
),
second_cte as (
SELECT var
FROM table2
)
SELECT a.var
FROM first_cte join second_cte using (var)
That is:
- the
WITH
would be capitalised on its own line - the name of the CTE would be on a new line (preferably with an empty line above)
- the
SELECT
statement inside the definition of theCTE
would start on a new line, idented to represent a block nested within the parentheses()