Changes between Initial Version and Version 1 of AdvancedReport7


Ignore:
Timestamp:
12/28/25 23:16:57 (6 days ago)
Author:
211101
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedReport7

    v1 v1  
     1===== Сумарни податоци за тагови
     2Сумирани податоци каде редовите се месеци, а колоните се тагови, а во полината се покажуваат различни сумирани податоци:
     3 - Вкупен број на трансакции
     4{{{#!sql
     5DO $$
     6DECLARE
     7    col_list TEXT; -- Листа на тагови за изведување на пивот
     8    dynamic_query TEXT; -- Динамичко SQL прашање
     9BEGIN
     10    -- Чекор 1: Динамички се генерира листа на колони
     11    SELECT STRING_AGG(DISTINCT format('SUM(CASE WHEN tg.tag_name = %L THEN 1 ELSE 0 END) AS %I', tag_name, tag_name), ', ')
     12    INTO col_list
     13    FROM tag;
     14
     15    -- Чекор 2: Се гради динамичкото прашање
     16    dynamic_query := format(
     17        'SELECT
     18            TO_CHAR(t.date, ''YYYY-MM'') AS transaction_month,
     19            %s
     20        FROM
     21            transaction t
     22        JOIN
     23            tag_assigned_to_transaction tat ON t.transaction_id = tat.transaction_id
     24        JOIN
     25            tag tg ON tat.tag_id = tg.tag_id
     26        GROUP BY
     27            transaction_month
     28        ORDER BY
     29            transaction_month;',
     30        col_list
     31    );
     32
     33    -- Чекор 3: Извршување на динамичкото прашање
     34    EXECUTE dynamic_query;
     35END $$;
     36}}}
     37 - Вкупно примени средства
     38{{{#!sql
     39DO $$
     40DECLARE
     41    col_list TEXT; -- Листа на тагови за изведување на пивот
     42    dynamic_query TEXT; -- Динамичко SQL прашање
     43BEGIN
     44    -- Чекор 1: Динамички се генерира листа на колони
     45    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), ', ')
     46    INTO col_list
     47    FROM tag;
     48
     49    -- Чекор 2: Се гради динамичкото прашање
     50    dynamic_query := format(
     51        'SELECT
     52            TO_CHAR(t.date, ''YYYY-MM'') AS transaction_month,
     53            %s
     54        FROM
     55            transaction t
     56        JOIN
     57            transaction_breakdown tb ON t.transaction_id = tb.transaction_id
     58        JOIN
     59            tag_assigned_to_transaction tat ON t.transaction_id = tat.transaction_id
     60        JOIN
     61            tag tg ON tat.tag_id = tg.tag_id
     62        GROUP BY
     63            transaction_month
     64        ORDER BY
     65            transaction_month;',
     66        col_list
     67    );
     68
     69    -- Чекор 3: Извршување на динамичкото прашање
     70    EXECUTE dynamic_query;
     71END $$;
     72}}}
     73 - Вкупно потрошени средства
     74{{{#!sql
     75DO $$
     76DECLARE
     77    col_list TEXT; -- Листа на тагови за изведување на пивот
     78    dynamic_query TEXT; -- Динамичко SQL прашање
     79BEGIN
     80    -- Чекор 1: Динамички се генерира листа на колони
     81    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), ', ')
     82    INTO col_list
     83    FROM tag;
     84
     85    -- Чекор 2: Се гради динамичкото прашање
     86    dynamic_query := format(
     87        'SELECT
     88            TO_CHAR(t.date, ''YYYY-MM'') AS transaction_month,
     89            %s
     90        FROM
     91            transaction t
     92        JOIN
     93            transaction_breakdown tb ON t.transaction_id = tb.transaction_id
     94        JOIN
     95            tag_assigned_to_transaction tat ON t.transaction_id = tat.transaction_id
     96        JOIN
     97            tag tg ON tat.tag_id = tg.tag_id
     98        GROUP BY
     99            transaction_month
     100        ORDER BY
     101            transaction_month;',
     102        col_list
     103    );
     104
     105    -- Чекор 3: Извршување на динамичкото прашање
     106    EXECUTE dynamic_query;
     107END $$;
     108}}}