Kolumny na podstawie rekordów z innej tabeli

0

Cześć, mam zagwozdkę.
W bazie mam 3 tabele - Faktury, Zespoły oraz Udziały:
http://prntscr.com/m4tpxm

Sprawa wygląda następująco - przy dodawaniu Faktury, użytkownik wskazuje udziały danego zespoły, np:
a) Faktura nr 1

  • zespół 1 - 25%
  • zespół 2 - 50%
  • zespół 3 - 25%
    b) Faktura nr 2
  • zespół 2 - 50%
  • zespół 4 - 50%
    c) Faktura nr 3
  • zespół 5 - 100%

I teraz przyszła pora na zestawienie faktur i udziałów. Chciałbym coś w tej formie:

#Tytuł #Kwota #Zespół 1 #Zespół 2 #Zespół 3 #Zespół 4 #Zespół 5
nr 1 xxxx 25% 50% 25% 0% 0%
nr 2 xxxx 0% 50% 0% 50% 0%
nr 2 xxxx 0% 0% 0% 0% 100%

Z bazami bawiłem się dobrych naście lat temu i odświeżam sobie wiedzę dopiero.
Patrząc w przyszłość nie chciałbym teraz tworzyć "sztywnych" zespołów.

A może struktura tabel dla tego założenia jest niefortunna i powinien schemat działania zmienić?

Dzięki z góry za pomoc

0

Jeśli nie znasz ilości zespołów, ilości faktur to zwykły pivot odpada. Widziałbym raczej dynamicznie konstruowanego sqla w jakiejś procedurze składowanej.
Szukaj pod hasłem "dynamic pivot query", np. https://stackoverflow.com/questions/10404348/sql-server-dynamic-pivot-query

0

Na chwilę obecną mamy 10 zespołów. Ich ilość w najbliższym czasie może się zwiększy o maks. 2, ale trudno to przewidzieć. Tak patrząc prawdzie w oczy, to nie przewiduję zmian w najbliższych 5 latach.
Może chcę być "świętszy od papieża" i w takim wypadku powinienem sobie odpuścić ten schemat?

Tylko co wtedy byłoby najlepsze?

0

Jak dla mnie pojawienie się nowych zespołów to słaby powód do modyfikacji zapytań, ale od biedy możesz tak zrobić i zahardkodować np. 12 czy 20 zespołów w zapytaniu pivotowym.
Osobiście jednak zrobiłbym to dynamic pivot query.

Inną opcją (nie wiem jak często będziesz takie zestawienia robił), to podpięcie się excelem do bazy i zrobienie jakiejś tabeli przestawnej w excelu, na podstawie danych zaciągniętych z bazy.

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