我有一個表格,其中包含客戶端代碼,開始日期,結束日期和客戶端在開始和結束日期之間的表現。我現在想要將這些性能數字重新設置爲100,以便在SSRS圖表中報告它們。在Excel中很容易做到這一點,但我不想在表格上創建另一個字段,並用各自的基於重新值的值更新所有行。我已經編寫了以下代碼塊來運行SSRS報告數據集,並且我在執行它時得到'沒有數據'。但是我需要爲我選擇的客戶重新創建13行。另外我需要以查詢格式輸出(如下所示),因爲輸出是用於SSRS圖表的。謝謝。使用while循環執行select查詢以獲取所有行值和計算列
DECLARE
i FLOAT(126) :=100;
rowno number :=1;
n NUMBER;
clicode VARCHAR(10);
startdate DATE;
enddate DATE;
performance FLOAT(126);
month VARCHAR(10);
year VARCHAR(10);
rebased_perf FLOAT(126);
BEGIN
select count(*) into n from performance;
WHILE rowno <= n LOOP
select a.*,i*(1+(a.performance/100)) as rebased_perf into rowno,clicode,startdate,enddate,performance,month,year,rebased_perf from
(select rownum ,b.* from
(select clicode,startdate,enddate,performance,month,year from performance
where period='Halfyearly'
and clicode='XXX004'
order by enddate) b)a
where rownum=rowno;
i:=rebased_perf;
rowno:=rowno+1;
END LOOP;
END;
CLICODE STARTDATE ENDDATE PERFORMANCE REBASED_PERF
Startbase 05-Oct-09 100
XXX004 05-Oct-09 05-Apr-10 3.85 103.85
XXX004 05-Apr-10 05-Oct-10 0.63 104.50
XXX004 05-Oct-10 05-Apr-11 4.58 109.29
XXX004 05-Apr-11 05-Oct-11 -8.07 100.47
XXX004 05-Oct-11 05-Apr-12 8.13 108.63
該代碼可以使用某些格式(縮進)! –
這是我第一次嘗試使用循環,我確定它需要很多格式化 – danny
您是否必須爲此使用循環(或更普遍的PL/SQL)?它是你學習PL/SQL,循環,遊標等的一部分嗎?如果不是普通的SQL解決方案几乎肯定會更有效率。 – mathguy