diff --git a/Procedures/get_hi_tree_for_uid_pg_numeric__date__text_.txt b/Procedures/get_hi_tree_for_uid_pg_numeric__date__text_.txt new file mode 100644 index 0000000000000000000000000000000000000000..f0b81e7e651936ef86cd1385851ded97b181a032 --- /dev/null +++ b/Procedures/get_hi_tree_for_uid_pg_numeric__date__text_.txt @@ -0,0 +1,73 @@ +-- DROP PROCEDURE schema_xyz.get_hi_tree_for_uid_pg(numeric, date, text); + +CREATE OR REPLACE PROCEDURE schema_xyz.get_hi_tree_for_uid_pg(input_uid numeric, hi_date date, output_table text) + LANGUAGE plpgsql +AS $procedure$ + BEGIN + +/* + +Parameters: + +* a uid for which the HIs are to be found +* a date for which you want to search +* a name for an output table, which then contains the result +*/ + + +EXECUTE 'create table '||output_table||' as (SELECT (CASE r1.uid_0 WHEN 0 THEN r1.uid_1 ELSE + (CASE r2.uid_0 WHEN 0 THEN r2.uid_1 ELSE + (CASE r3.uid_0 WHEN 0 THEN r3.uid_1 ELSE + (CASE r4.uid_0 WHEN 0 THEN r4.uid_1 ELSE + (CASE r5.uid_0 WHEN 0 THEN r5.uid_1 ELSE + (CASE r6.uid_0 WHEN 0 THEN r6.uid_1 ELSE r6.uid_0 END)END)END)END)END)END) top, + r6.uid_0 u6, + r5.uid_0 u5, + r4.uid_0 u4, + r3.uid_0 u3, + r2.uid_0 u2, + r1.uid_0 u1, + r1.uid_1 u_last + +FROM schema_xyz.relation r1 +LEFT JOIN schema_xyz.relation r2 ON r2.uid_1=r1.uid_0 + AND r2.type IN (0,1) + AND r2.last_date >=to_date('''||hi_date||''',''YYYY-MM-DD'') + AND r2.first_date <=to_date('''||hi_date||''',''YYYY-MM-DD'') +LEFT JOIN schema_xyz.relation r3 ON r3.uid_1=r2.uid_0 + AND r3.type IN (0,1) + AND r3.last_date >=to_date('''||hi_date||''',''YYYY-MM-DD'') + AND r3.first_date <=to_date('''||hi_date||''',''YYYY-MM-DD'') +LEFT JOIN schema_xyz.relation r4 ON r4.uid_1=r3.uid_0 + AND r4.type IN (0,1) + AND r4.last_date >=to_date('''||hi_date||''',''YYYY-MM-DD'') + AND r4.first_date <=to_date('''||hi_date||''' ,''YYYY-MM-DD'') +LEFT JOIN schema_xyz.relation r5 ON r5.uid_1=r4.uid_0 + AND r5.type IN (0,1) + AND r5.last_date >=to_date('''||hi_date||''',''YYYY-MM-DD'') + AND r5.first_date <=to_date('''||hi_date||''' ,''YYYY-MM-DD'') +LEFT JOIN schema_xyz.relation r6 ON r6.uid_1=r5.uid_0 + AND r6.type IN (0,1) + AND r6.first_date >=to_date('''||hi_date||''',''YYYY-MM-DD'') + AND r6.last_date <=to_date('''||hi_date||''',''YYYY-MM-DD'') +WHERE +r1.uid_1='||input_uid||' +AND r1.last_date >=to_date('''||hi_date||''',''YYYY-MM-DD'') +AND r1.first_date <=to_date('''||hi_date||''',''YYYY-MM-DD'') +and +(CASE r1.uid_0 WHEN 0 THEN r1.uid_1 ELSE + (CASE r2.uid_0 WHEN 0 THEN r2.uid_1 ELSE + (CASE r3.uid_0 WHEN 0 THEN r3.uid_1 ELSE + (CASE r4.uid_0 WHEN 0 THEN r4.uid_1 ELSE + (CASE r5.uid_0 WHEN 0 THEN r5.uid_1 ELSE + (CASE r6.uid_0 WHEN 0 THEN r6.uid_1 ELSE r6.uid_0 END)END)END)END)END)END) IS NOT NULL +AND r1.type IN (0, 1))'; + + + + + +end; + +$procedure$ +;