Petla z powtarzajacymi sie numerami sekwencyjnie

0

Hey mam goraca prosbe moze ktos z was bedzie wiedzial :

Mam tabele

Seq_no day_type
seq_no day_type
1 W
2 R06
3 R06
4 R06
5 R06
6 R06
7 W
8 W
9 R14
10 R14
11 R14
12 R14
13 R14
14 W
..
..
1100

Moje pytanie jak napisać pętlę która wypełni mi kolumnę seq_no danymi z kolumny day_type, ktore sie powtarzają cyklicznie?

0

A w jaki sposób się powtarzają cyklicznie? Ja na twoim miejscu pewnie bym najpierw starał się odkryć jakoś właśnie ten cykl jak się zachowuje, i na tej podstawie sklejać wartość do wstawienia

0

co? Jak dałeś to co masz to teraz daj jakbyś chciał aby to wyglądało

0

To ma wygladac ostatecznie tak: (wklejam tylko 50 miejsc ) ale potrzebuje to do 1096. Pierwsza kolumna: seq_no, druga type.

1 w
2 r06
3 r06
4 r06
5 r06
6 r06
7 w
8 w
9 r14
10 r14
11 r14
12 r14
13 r14
14 w
15 w
16 r06
17 r06
18 r06
19 r06
20 r06
21 w
22 w
23 r14
24 r14
25 r14
26 r14
27 r14
28 w
29 w
30 r06
31 r06
32 r06
33 r06
34 r06
35 w
36 w
37 r14
38 r14
39 r14
40 r14
41 r14
42 w
43 w
44 r06
45 r06
46 r06
47 r06
48 r06
49 w
50 w
51 r14
52 r14
53 r14
54 r14
55 r14
56 w

0

coś w stylu:
update tabela as tabela_1
set tabela_1.day_type = (select day_type from tabela tabela_2 where tabela_2.seq_no = tabela_1.seq_no - 14)
where tabela_1.seq_no > 14

0

poprawka, bo to, co napisałem, nie zadziała;)

set tabela_1.day_type = (select day_type from tabela tabela_2 where tabela_2.seq_no = tabela_1.seq_no - 14)
coś takiego:

set tabela_1.day_type = (select day_type from tabela tabela_2 where tabela_2.seq_no = mod((tabela_1.seq_no - 1), 14) + 1)
mod - dzielenie modulo,zastąp ewentualnie czymś, jeśli Twoja baza nie obsługuje akurat funkcji mod(x,y)
Powinno banglać.

0
  1. Czy dane zawsze są w postaci bloków:
W - powtórzone raz 
R06 - powtórzone 5 razy 
R14 - powtórzone 5 razy
W - powtórzone raz 
  1. Czy day_type to zawsze W, R06, R14 ?
0
yarel napisał(a):
  1. Czy dane zawsze są w postaci bloków:
W - powtórzone raz 
R06 - powtórzone 5 razy 
R14 - powtórzone 5 razy
W - powtórzone raz 
  1. Czy day_type to zawsze W, R06, R14 ?

Siemka tak dane zawsze sa w postaci bloków i zawsze W, R06, R14.

0
Chory Młot napisał(a):

poprawka, bo to, co napisałem, nie zadziała;)

set tabela_1.day_type = (select day_type from tabela tabela_2 where tabela_2.seq_no = tabela_1.seq_no - 14)
coś takiego:

set tabela_1.day_type = (select day_type from tabela tabela_2 where tabela_2.seq_no = mod((tabela_1.seq_no - 1), 14) + 1)
mod - dzielenie modulo,zastąp ewentualnie czymś, jeśli Twoja baza nie obsługuje akurat funkcji mod(x,y)
Powinno banglać.

Niestety nie dziala :/ wyswietlil sie komunikat "line 1:SQLPLUS command skipped: set..."

0
Avvilla napisał(a):

Niestety nie dziala :/ wyswietlil sie komunikat "line 1:SQLPLUS command skipped: set..."

o paaanie.
Ty z SQL cokolwiek ogarniasz, czy na żywca wklejasz co ktoś napisze bez zrozumienia?
Zakładam, że intencją było, aby w:

update tabela as tabela_1
set tabela_1.day_type = (select day_type from tabela tabela_2 where tabela_2.seq_no = tabela_1.seq_no - 14)
where tabela_1.seq_no > 14

zastąpić

set tabela_1.day_type = (select day_type from tabela tabela_2 where tabela_2.seq_no = tabela_1.seq_no - 14)

przez

set tabela_1.day_type = (select day_type from tabela tabela_2 where tabela_2.seq_no = mod((tabela_1.seq_no - 1), 14) + 1)
0

Niedawno zaczęłam przygodę z sql

Los Bomberos napisał(a):
Avvilla napisał(a):

Niestety nie dziala :/ wyswietlil sie komunikat "line 1:SQLPLUS command skipped: set..."

o paaanie.
Ty z SQL cokolwiek ogarniasz, czy na żywca wklejasz co ktoś napisze bez zrozumienia?
Zakładam, że intencją było, aby w:

update tabela as tabela_1
set tabela_1.day_type = (select day_type from tabela tabela_2 where tabela_2.seq_no = tabela_1.seq_no - 14)
where tabela_1.seq_no > 14

zastąpić

set tabela_1.day_type = (select day_type from tabela tabela_2 where tabela_2.seq_no = tabela_1.seq_no - 14)

przez

set tabela_1.day_type = (select day_type from tabela tabela_2 where tabela_2.seq_no = mod((tabela_1.seq_no - 1), 14) + 1)
0

Dzięki wszystko śmiga :)

Los Bomberos napisał(a):
Avvilla napisał(a):

Niestety nie dziala :/ wyswietlil sie komunikat "line 1:SQLPLUS command skipped: set..."

o paaanie.
Ty z SQL cokolwiek ogarniasz, czy na żywca wklejasz co ktoś napisze bez zrozumienia?
Zakładam, że intencją było, aby w:

update tabela as tabela_1
set tabela_1.day_type = (select day_type from tabela tabela_2 where tabela_2.seq_no = tabela_1.seq_no - 14)
where tabela_1.seq_no > 14

zastąpić

set tabela_1.day_type = (select day_type from tabela tabela_2 where tabela_2.seq_no = tabela_1.seq_no - 14)

przez

set tabela_1.day_type = (select day_type from tabela tabela_2 where tabela_2.seq_no = mod((tabela_1.seq_no - 1), 14) + 1)
0

Dzięki działa :)
wcześniej po prostu zapomniała o update :(

Chory Młot napisał(a):

poprawka, bo to, co napisałem, nie zadziała;)

set tabela_1.day_type = (select day_type from tabela tabela_2 where tabela_2.seq_no = tabela_1.seq_no - 14)
coś takiego:

set tabela_1.day_type = (select day_type from tabela tabela_2 where tabela_2.seq_no = mod((tabela_1.seq_no - 1), 14) + 1)
mod - dzielenie modulo,zastąp ewentualnie czymś, jeśli Twoja baza nie obsługuje akurat funkcji mod(x,y)
Powinno banglać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1