Skip to content
Snippets Groups Projects
Commit 6176d1e5 authored by Christopher Lenke's avatar Christopher Lenke
Browse files

23.09.2024

parent a83aa16f
No related branches found
No related tags found
No related merge requests found
-- 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$
;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment