ďťż
 
[MS SQL 2000] PIVOT? ďťż
 
[MS SQL 2000] PIVOT?
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[MS SQL 2000] PIVOT?



Krzysztof Wiśniewski - 04-04-2006 00:08
[MS SQL 2000] PIVOT?
  Nie mam pomysłu na sensowny opis sytuacji, więc posłużę się przykładem. Z
zewnętrznego systemu dostaję dane w następujących zbiorach:

tabela Plany:
-------------------------------------------
| Produkt | Okres |
-------------------------------------------
| produkt 1 | 3 miesiące |
-------------------------------------------
| produkt 1 | 6 miesięcy |
-------------------------------------------
| produkt 1 | 9 miesięcy |
-------------------------------------------
| produkt 2 | 1 miesiąc |
-------------------------------------------
| produkt 2 | 9 miesięcy |
-------------------------------------------

tabela Wyniki:
---------------------------------------------------------
| Produkt | Parametr | Wynik | Okres |
---------------------------------------------------------
| produkt 1 | pierwszy | 23.77 | 3 miesiące |
---------------------------------------------------------
| produkt 1 | drugi | 30.17 | 3 miesiące |
---------------------------------------------------------
| produkt 1 | trzeci | 35.16 | 3 miesiące |
---------------------------------------------------------
| produkt 1 | pierwszy | 13.77 | 6 miesięcy |
---------------------------------------------------------
| produkt 1 | trzeci | 15.16 | 6 miesięcy |
---------------------------------------------------------
| produkt 1 | pierwszy | 19.99 | 9 miesięcy |
---------------------------------------------------------
| produkt 2 | pierwszy | 7.16 | 1 miesiąc |
---------------------------------------------------------
itd...

W jaki sposób otrzymać (dla podanego Produktu) zestawienie, które:
- będzie się składało z tylu kolumn, ile różnych okresów zdefiniowano dla
niego w tabeli "Plany",
- poszczególne kolumny będą zawierały w swoich nagłówkach wartości zapisane
w polu "Okres" w tabeli "Plany",
- nagłówkami wierszy będą wartości zapisane w polu "Parametr" w tabeli
"Wyniki",
- na przecięciu kolumny i wiersza znajdzie się wartość z pola "Wynik" z
tabeli "Wyniki", lub NULL, jeśli takiego wpisu w bazie nie ma
??

Przykładowe rezultaty dla powyższych danych:

Dla 'produkt 1':
-----------------------------------------------------
| Parametr | 3 miesiace | 6 miesięcy | 9 miesięcy |
-----------------------------------------------------
| pierwszy | 23.77 | 13.77 | 19.99 |
-----------------------------------------------------
| drugi | 30.17 | NULL | 15.16 |
-----------------------------------------------------
| trzeci | NULL | 15.16 | NULL |
-----------------------------------------------------

Dla 'produkt 2':
----------------------------------------
| Parametr | 1 miesiąc | 9 miesięcy |
----------------------------------------
| pierwszy | 7.16 | NULL |
----------------------------------------

Próbowałem z tabelą tymczasową, ale nie mam pojęcia, jak uzależnić ilość pól
w niej tworzonych od ilości wierszy zwróconych dla danego produktu w tabeli
"Plany"...

Będę wdzięczny za wszelkie konstruktywne sugestie.

--
Pozdrawiam,
Krzysiek





Shalom - 05-04-2006 00:03

  pivot




Krzysztof Wisniewski - 05-04-2006 00:03

 
Shalom napisal(a):
> pivot

A móglbys ów "pivot" nieco rozwinac? Przyklad z BOL odnosi sie
do sytuacji, w której WIEMY ile mamy kolumn w docelowej siatce danych.
W moim przypadku warunek ten nie jest spelniony; ale moze o czyms
zapomnialem... ?

Pozdrawiam,
Krzysiek




Grzegorz Danowski - 05-04-2006 00:03

  Użytkownik "Krzysztof Wiśniewski" <ktuvok@poczta.onet.pl> napisał w
wiadomości news:e0s849$qiq$1@news.onet.pl...
(...)
> W jaki sposób otrzymać (dla podanego Produktu) zestawienie, które:
> - będzie się składało z tylu kolumn, ile różnych okresów zdefiniowano dla
> niego w tabeli "Plany",
> - poszczególne kolumny będą zawierały w swoich nagłówkach wartości
> zapisane
> w polu "Okres" w tabeli "Plany",
> - nagłówkami wierszy będą wartości zapisane w polu "Parametr" w tabeli
> "Wyniki",
> - na przecięciu kolumny i wiersza znajdzie się wartość z pola "Wynik" z
> tabeli "Wyniki", lub NULL, jeśli takiego wpisu w bazie nie ma
> ??

Googla wyłączyli czy co?
np.:
http://groups.google.pl/group/pl.com...0b26ffba6b3df/

G.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    jak to =?ISO-8859-2?Q?zrobi=E6=2E=2E=2E=3F_TSQL_sql_server?==?ISO-8859-2?Q?_?= =?iso-8859-2?Q?=5BMS_SQL=5D_Czy_mo=BFna_wywo=B3a=E6_funkcje_t ylko_raz_dla?==?iso-8859-2?Q?_ca=B3ego_zbioru_=BCr=F3d=B3owego=3F?= [MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?= Oracle PL/SQL Wstawianie =?ISO-8859-2?Q?wynik=F3w_kolekcji_d?==?ISO-8859-2?Q?o_tabeli?= [MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?= =?iso-8859-2?Q?=5Bmssql=5D_Zapytania_rekurencyjne__-_czy_sk=B3adnia_sql?==?iso-8859-2?Q?_co=B6_takiego_przewiduje_=3F?= [Oracle PL/SQL] Cursor i zapis =?ISO-8859-2?Q?rekord=F3w_do_?==?ISO-8859-2?Q?kolejnych_plik=F3w?= =?iso-8859-2?Q?=5BMySQL=5D_Co_minimalnie_potrzebne_zeby_mie=E 6_klienta_My?==?iso-8859-2?Q?SQL_na_Linuxie=3F?= [oracle] - Oracle SQL Developer - co to jest SID? =?ISO-8859-2?Q?[Oracle]_Wywo=B3anie_skryptu_sh_z_PL/SQL-a=3F=3F?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • felgiuzywane.xlx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com