Wpadłem na nie co inny pomysł:
Tabela źródłowa liczy sobie 254 rekordy i 16 kolumn
- pierwsza to czas_id PK - int
- kolejne to czas_1, czas_2 ....itd - datetime
with
cz1
as
(select
czas_id,czas_1
from
czas),
cz2
as
(select
czas_id,czas_2
from
czas),
cz3
as
(select
czas_id,czas_3
from
czas),
cz4
as
(select
czas_id,czas_4
from
czas),
cz5
as
(select
czas_id,czas_5
from
czas),
cz6
as
(select
czas_id,czas_6
from
czas),
cz7
as
(select
czas_id,czas_7
from
czas),
cz8
as
(select
czas_id,czas_8
from
czas),
cz9
as
(select
czas_id,czas_9
from
czas),
cz10
as
(select
czas_id,czas_10
from
czas),
cz11
as
(select
czas_id,czas_11
from
czas),
cz12
as
(select
czas_id,czas_12
from
czas),
cz13
as
(select
czas_id,czas_13
from
czas),
cz14
as
(select
czas_id,czas_14
from
czas),
cz15
as
(select
czas_id,czas_15
from
czas),
unionTable
as
(
select
*
from
cz1
union
select
*
from
cz2
union
select
*
from
cz3
union
select
*
from
cz4
union
select
*
from
cz5
union
select
*
from
cz6
union
select
*
from
cz7
union
select
*
from
cz8
union
select
*
from
cz9
union
select
*
from
cz10
union
select
*
from
cz11
union
select
*
from
cz12
union
select
*
from
cz13
union
select
*
from
cz14
union
select
*
from
cz15
)
SELECT
*
INTO
czas_OneColumn
FROM
unionTable
Zapewne istnieje łatwiejszy sposób albo mniej pogmatwany ale na tę chwilę go nie znam.
Mając dane testowe można przejść do tworzenia algorytmu.
Tabele w oryginalnej bazie były tworzone w ten sposób że tabela czas i zawodnik były połączone relacją wiele do wielu poprzez tabele łączącą.
Z reguły było tak że czas_id odpowiadał zaw_id (tabela zawodnik). Idąc tym tropem w moich rozważaniach czas_id będzie również traktowany jako zawodnik.
Uwaga
Zamiast Union można zastosować Union All tyle że w drugim przypadku trzeb się przygotować na dużą ilość duplikatów.
W moim przypadku przy użyciu union mam 1243 rekordy z czego 251 ma wartość null w kolumnie czas_1
Union All to ilość 3810 rekordów z czego 2818 to null-e
Do tej pory wartości null były dopuszczane w tabeli z czasami, gdyż każdy zawodnik ma 15 kolumn z czasami ale nie wszyscy jadą na maksymalną odległość.
W nowej wersji każdy zawodnik będzie miał tylko taką ilość wierszy jaka zostanie dodana przy pomiarze czasu na czytniku.
Zamiast Union można zastosować Union All tyle że w drugim przypadku trzeb się przygotować na dużą ilość duplikatów.
W moim przypadku przy użyciu union mam 1243 rekordy z czego 251 ma wartość null w kolumnie czas_1
Union All to ilość 3810 rekordów z czego 2818 to null-e
Do tej pory wartości null były dopuszczane w tabeli z czasami, gdyż każdy zawodnik ma 15 kolumn z czasami ale nie wszyscy jadą na maksymalną odległość.
W nowej wersji każdy zawodnik będzie miał tylko taką ilość wierszy jaka zostanie dodana przy pomiarze czasu na czytniku.
cdn...
Brak komentarzy:
Prześlij komentarz