[英]Dynamic query - to be updated weekly - Oracle SQL
我有一個基於用戶上傳信息的查詢,它基本上是一個包含員工統計數據的每周文件。 問題是,查詢需要每周更新一次(一旦用戶加載了新周信息)以添加新周數據。 例如:
在那個例子中,一旦第 7 周點擊並且用戶加載了它的信息......應該添加一個新列(week7 列)。
我已經有了一個靜態查詢,但這意味着我必須每周向其中添加新部件。 有什么建議嗎? (我正在考慮通過 PL/SQL 循環它拉最大周數,但......不知道如何將其轉換為報告視圖)
編輯:此查詢將基於我自己創建的表,該表將通過 CSV 文件上傳每周將所有現有數據替換為新數據。 表示例: (周列上的數字告訴我們員工是否在特定周完成了活動)
EMPLOYEE WEEK
Dana 1
Filipe 2
hannah 2
hannah 3
jonh 1
jonh 4
謝謝
能夠找到本地幫助,創建了一個函數來創建我的查詢:
CREATE OR REPLACE Function my_function
RETURN varchar2
IS
v_stmt varchar2(5000);
v_my_week number;
begin
v_stmt :='with data_1 as(
select distinct
Rep
from My_table
order by 1
)' ;
for i in (select distinct week from My_table ) loop
v_stmt := v_stmt || ', week_'|| i.week || ' as(
select
Rep,
count(unique_j) unique_'|| i.week ||
'
from My_table
where week = ' || i.week || '
group by week, Rep
)';
end loop;
v_stmt := v_stmt || ' select
b.Rep';
for i in (select distinct week from My_table) loop
v_stmt := v_stmt || ', unique_'|| i.week || ' as as Week_' || i.week ;
end loop;
v_stmt := v_stmt || ' from data_1 b';
for i in (select distinct week from My_table) loop
v_stmt := v_stmt || ' left join week_'|| i.week || ' wk'|| i.week || ' on
wk'||i.week ||'.Rep = b.Rep';
end loop;
return v_stmt;
end;
謝謝你們
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.