| Version 1 (modified by , 5 days ago) ( diff ) |
|---|
Сумарни податоци за тагови
Сумирани податоци каде редовите се месеци, а колоните се тагови, а во полината се покажуваат различни сумирани податоци:
- Вкупен број на трансакции
DO $$ DECLARE col_list TEXT; -- Листа на тагови за изведување на пивот dynamic_query TEXT; -- Динамичко SQL прашање BEGIN -- Чекор 1: Динамички се генерира листа на колони SELECT STRING_AGG(DISTINCT format('SUM(CASE WHEN tg.tag_name = %L THEN 1 ELSE 0 END) AS %I', tag_name, tag_name), ', ') INTO col_list FROM tag; -- Чекор 2: Се гради динамичкото прашање dynamic_query := format( 'SELECT TO_CHAR(t.date, ''YYYY-MM'') AS transaction_month, %s FROM transaction t JOIN tag_assigned_to_transaction tat ON t.transaction_id = tat.transaction_id JOIN tag tg ON tat.tag_id = tg.tag_id GROUP BY transaction_month ORDER BY transaction_month;', col_list ); -- Чекор 3: Извршување на динамичкото прашање EXECUTE dynamic_query; END $$; - Вкупно примени средства
DO $$ DECLARE col_list TEXT; -- Листа на тагови за изведување на пивот dynamic_query TEXT; -- Динамичко SQL прашање BEGIN -- Чекор 1: Динамички се генерира листа на колони SELECT STRING_AGG(DISTINCT format('SUM(CASE WHEN tg.tag_name = %L THEN tb.earned_amount ELSE 0 END) AS %I', tag_name, tag_name), ', ') INTO col_list FROM tag; -- Чекор 2: Се гради динамичкото прашање dynamic_query := format( 'SELECT TO_CHAR(t.date, ''YYYY-MM'') AS transaction_month, %s FROM transaction t JOIN transaction_breakdown tb ON t.transaction_id = tb.transaction_id JOIN tag_assigned_to_transaction tat ON t.transaction_id = tat.transaction_id JOIN tag tg ON tat.tag_id = tg.tag_id GROUP BY transaction_month ORDER BY transaction_month;', col_list ); -- Чекор 3: Извршување на динамичкото прашање EXECUTE dynamic_query; END $$; - Вкупно потрошени средства
DO $$ DECLARE col_list TEXT; -- Листа на тагови за изведување на пивот dynamic_query TEXT; -- Динамичко SQL прашање BEGIN -- Чекор 1: Динамички се генерира листа на колони SELECT STRING_AGG(DISTINCT format('SUM(CASE WHEN tg.tag_name = %L THEN tb.spent_amount ELSE 0 END) AS %I', tag_name, tag_name), ', ') INTO col_list FROM tag; -- Чекор 2: Се гради динамичкото прашање dynamic_query := format( 'SELECT TO_CHAR(t.date, ''YYYY-MM'') AS transaction_month, %s FROM transaction t JOIN transaction_breakdown tb ON t.transaction_id = tb.transaction_id JOIN tag_assigned_to_transaction tat ON t.transaction_id = tat.transaction_id JOIN tag tg ON tat.tag_id = tg.tag_id GROUP BY transaction_month ORDER BY transaction_month;', col_list ); -- Чекор 3: Извршување на динамичкото прашање EXECUTE dynamic_query; END $$;
Note:
See TracWiki
for help on using the wiki.
