簡體   English   中英

動態查詢 - 每周更新 - Oracle SQL

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM