2012-11-21 16 views
2

我有表zadanie1與plyyers和6 randoms每個數字。樂透彩票如何計算每一行中的贏錢數量?

create table zadanie1(
    nazwisko varchar2(30), 
    liczba1 number, 
    liczba2 number, 
    liczba3 number, 
    liczba4 number, 
    liczba5 number, 
    liczba6 number, 
    constraint stud2_nazw primary key (nazwisko) 
); 


    Create or replace procedure "TOTOLOTEK3" is liczba number; 
    cursor pierwszy_kursor is select num from (select num from (select rownum num from dual    connect by level <= 49 order by dbms_random.value) where rownum <= 6); 
    begin 
    for iter in 1..5 
    loop 
    open pierwszy_kursor; 
    for iterator in 1..6 
    loop 
    fetch pierwszy_kursor into liczba; 
    if iterator=1 
    then update zadanie2 set liczba1=liczba where Id = iter; 
    end if; 
    if iterator=2 
    then update zadanie2 set liczba2=liczba where Id = iter; 
    end if; 
    if iterator=3 
    then update zadanie2 set liczba3=liczba where Id = iter; 
    end if; 
    if iterator=4 
    then update zadanie2 set liczba4=liczba where Id = iter; 
    end if; 
    if iterator=5 
    then update zadanie2 set liczba5=liczba where Id = iter; 
    end if; 
    if iterator=6 
    then update zadanie2 set liczba6=liczba where Id = iter; 
    end if; 
    dbms_output.put_line(liczba||' liczba '); 
    exit when pierwszy_kursor%notfound; 
    end loop; 
    close pierwszy_kursor; 
    end loop; 
    end; 

我在想分析功能,但我不知道如何在這種情況下使用。

當我有單行優惠券時,我需要爲每個玩家計數獲勝次數? 幫助

回答

0

我喜歡你的隨機生成器查詢,很聰明!

您需要將行轉置爲列。這可以通過PIVOTMIN(DECODE)完成。一旦你在一排擁有它,你不需要光標,可以直接插入行到目標表:

create or replace procedure totolotek3 as  
begin 
    for iter in 1..5 loop 
    insert into zadanie2(liczba1,liczba2,liczba3,liczba4,liczba5,liczba6) 
    select min(decode(rownum,1,num)) as num1, 
      min(decode(rownum,2,num)) as num2, 
      min(decode(rownum,3,num)) as num3, 
      min(decode(rownum,4,num)) as num4, 
      min(decode(rownum,5,num)) as num5, 
      min(decode(rownum,6,num)) as num6 
     from (select rownum num 
       from dual connect by level <= 49 
      order by dbms_random.value) 
    where rownum <= 6; 
    end loop; 
end totolotek3; 
/

如果zadanie2有一個主鍵的表,也一樣,你需要填寫當然,這一欄也是。