Przetworzenie macierzy od - do na przebieg

0

Mam taki problem. Spora tabela do przerobienia. W skrócie chodzi o to, że mamy tabele w której są przedstawione odcinki w kolejności:
title
A potrzebuję aby w tej kolejności były miejsca.
title

0

Order by data_odj, nr, kolejność ?

1
SELECT kolejnosc_od, miejsce_od
FROM Pociagi
UNION
SELECT kolejnosc_do, miejsce_do
FROM Pociagi
1

Nie eleganckie to i jestem przekonany, że da się to zrobic lepiej ... ale jakoś się jeszcze nie obudziłem:

Aaa i zakładam, że możemy i uznać Datę i nr jako "klucz"


WITH TempTab as

(SELECT Data, nr, MAX([Kolejnosc do]) OstNr FROM Tablica
GROUP BY Data, nr)
)

SELECT Data, nr,[Kolejnosc od], miejsce od FROM Tablica

UNION

SELECT Data, nr, [Kolejnosc do], miejsce do FROM Tablica
WHERE [Kolejnosc do] = TempTab.OstNr and Data = TempTab.Data and nr = TempTab.nr

Edit: ups spóźniony :(

0

Haskell, aż mi wstyd, że nie wpadłem na to. Działa jak miało być, ale jest jeszcze jeden szkopuł. Są jeszcze dwie kolumny. Przyjazd i odjazd. No takie rozwiązanie powoduje, że dla danego "miejsca" jest zbyt wiele godzin (po dwa wersy dla miejsca). Potrzeba jest taka, żeby do miejsc był odjazd, a do ostatniej stacji przyjazd.
BlackBad, nie zadziałało mi to w ogóle. Pewnie z powodu mojej indolencji z używaniem "With"

Pozdrawiam i dziękuje.

0

Na jakiej bazie pracujesz ? O ile pamiętam sprawdziłem (SQL Server) ten kod na Twoich danych i wszystko działało jak ta lala. Jaki masz konkretnie błąd ?

0

Przepraszam za opieszałość. Musiałem się zająć zupełnie innymi rzeczami.
Oczywiście zadziałało. Problem był w mojej nieuwadze.
Niemniej mam zadanie dodatkowe. Do powyższego mam jeszcze "godzinę przybycia" i "godzinę odjazdu". W takim wypadku po dodaniu kolumny "dubluje" mi miejsca. Co jest logiczne bo tylko początek i koniec ma po jednej "godzinie".
Jakieś sugestie?

Dziękuję

0

Wiesz co wklej raz jeszcze jakie masz dane teraz i jak maja wyglądać finalnie, coś jak w 1 poście - łatwiej się zorientować w strukturze i podać dobre rozwiązanie.

0

Pierwsza tabelka to uporządkowany wynik łączenia według pomocnych skryptów.
Druga to układ, który potrzebuje.
title

Tabela pierwotna (z pierwszego postu) ma po prostu godzinę odjazdu "z" i godzinę przyjazdu "do".

0

Tabela pierwotna.
Tabelą z załącznika potrzebuje zmienić na tabelę z poprzedniego postu ("**Tak bym chciał **;)" ).

1

Mam wrażenie, ze to "jakbys chciał", ma poprzestawiane przyjazd z odjazdem, więc masz wersje "jak ja bym to widział" ;)

select
    t1.data
    ,t1.nr
    ,t1.lp_od [Kolejność]
    ,t1.od as Miejsce
    ,t1.godzina_odjazdu
    ,t2.godzina_przyjazdu
 from
     tab t1
     left join tab t2 on t1.nr=t2.nr and t1.data=t2.data and t1.lp_od = t2.lp_do
 union all
 select
    t1.data
    ,t1.nr
    ,t1.lp_do [Kolejność]
    ,t1.do as Miejsce
    ,null 
    ,t1.godzina_przyjazdu
 from
      tab t1
     left join tab t2 on t1.nr=t2.nr and t1.data=t2.data and t1.lp_do = t2.lp_od
 where
      t2.lp_do is null 
 order by
    1,2,3

http://sqlfiddle.com/#!18/bf41c/16

0

Tak, kolejność kolumn odwrotna. Moja pomyłka.

0

Czołem po przerwie.
Teraz potrzebuję jeszcze takiego rozwiązania które zrobi z załączonych danych rozkład tabel jak w skrypcie Panczo. Tylko jest więcej dat wystąpienia.
Jest tak, że powiedzmy dany Nr występuję z takim samym rozkładem jazdy.
Teraz sytuacja jest nieco inna. Dany numer ma różnie rozkłady jazdy (aktualnie różniące się godzinami przyjazdu bądź odjazdu). Jednego dnia ma taki innego taki. Potrzebuje zagregować go ze względu na właśnie różnice, aby nie występowały wszystkie tylko wszystkie "rodzaje".
Aby tabela prezentowała się jak poprzednio, ale żeby dany rozkład występował raz. Taki profil czasowy.

Pozdrawiam

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