2012-11-21 2 views
2

나는 테이블마다 zyanie1와 plyyers와 6 개의 randoms number를 가지고있다.로또 복권 어떻게 모든 행에서 승리의 수를 계산할 수 있습니까?

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

난 임의 생성기 쿼리를 좋아합니다.

행을 열로 조 변경해야합니다. 이는 PIVOT 또는 MIN(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 테이블은, 너무, 당신은 입력해야하는 경우 물론 그 칼럼.

관련 문제