2

私は plyyers とすべての 6 つの乱数を持つテーブル zadanie1 を持っています。

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;

アナリティクス機能を考えていたのですが、この場合の使い方がわかりません。

行クーポンが 1 つある場合、すべてのプレイヤーの勝利数をカウントする必要がありますか? ヘルプ

4

1 に答える 1

0

私はあなたのランダムジェネレータクエリが好きです、かなり賢いです!

行を列に転置する必要があります。PIVOTこれは、またはを介して実行できますMIN(DECODE)。1つの行に配置すると、カーソルは不要になり、その行をターゲットテーブルに直接挿入できます。

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にも主キーがある場合は、もちろん、その列にも入力する必要があります。

于 2012-12-01T14:01:14.820 に答える