Kolumny w których sa podsumowania dla poszczególnych tygodni
kurciok@poczta.onet.pl - 13-11-2006 00:44
Kolumny w których sa podsumowania dla poszczególnych tygodni
Powiedzmy ze mam tabele ze sprzedawcami kazdy sprzedawca moze miec wiele transakcji kumpna i sprzedazy (kazda transakcja ma swoja date). Transakcje sa zapisywane w osobnej tabeli i za pomoca joina mozna zidentyfikowac jakie transakcje naleza do danego sprzedawcy.
A chcialbym wyswietlic jak sprzedaz wygladala dla kazdego tygodnia w roku tak aby kazdy tydzien byl w nowej kolumnie tabeli.
Mozna pogrupowac transakcje wedlug danego sprzedawcy i zsumowac kowte sprzedazy tak aby data sprzedazy zawierala sie w danym tygodniu. Ale to bedzie wtedy tylko jedna kolumna i dane dla jednego tygodnia (a tygodni w roku jest 52). Chcialbym ulozyc jakies ladne zapytanie które wyswietli mi dane dla 52 tygodni. Baza danych to MSSQL 2005
piotrk@ai.pl - 13-11-2006 00:44
kurciok@poczta.onet.pl napisał(a): > A chcialbym wyswietlic jak sprzedaz wygladala dla kazdego > tygodnia w roku tak aby kazdy tydzien byl w nowej kolumnie tabeli.
Nie daję gwarancji, że to zadziała, ale może jako wskazówka, do ew. poprawki :)
SELECT s.idsprzedawcy, s.nazwisko, DATEPART(wk, datasprzedazy) AS tydzien, SUM(t.kwota) FROM sprzedawcy s JOIN transakcje t ON s.idsprzedawcy = t.idsprzedawcy GROUP BY s.idsprzedawcy, s.nazwisko, tydzien
kurciok@poczta.onet.pl - 13-11-2006 00:44
piotrk@ai.pl napisał(a): > kurciok@poczta.onet.pl napisał(a): > > A chcialbym wyswietlic jak sprzedaz wygladala dla kazdego > > tygodnia w roku tak aby kazdy tydzien byl w nowej kolumnie tabeli. > > Nie daję gwarancji, że to zadziała, ale może jako wskazówka, > do ew. poprawki :) > > SELECT s.idsprzedawcy, s.nazwisko, DATEPART(wk, datasprzedazy) AS > tydzien, SUM(t.kwota) > FROM sprzedawcy s JOIN transakcje t > ON s.idsprzedawcy = t.idsprzedawcy > GROUP BY s.idsprzedawcy, s.nazwisko, tydzien
Ok to jest prawie że to o co mi chodziło ;), nie do końca bo stosując takie zapytanie dostaje 4 kolumny, a kolejne tygodnie są zapisywane w kolejnych wierszach (także informacje niby jest ale nie do końca w takiej formie jak chciałem). Co teraz zrobić abym dostał tabelę z 52 kolumnami (każda kolumna odpowiada innemu tygodniowi). Myślałem aby zrobić widok ale może też jest jakieś inne wyjście?
Grzesiek G. - 13-11-2006 00:44
kurciok@poczta.onet.pl napisał(a): > piotrk@ai.pl napisał(a): > >>kurciok@poczta.onet.pl napisał(a): >> >>>A chcialbym wyswietlic jak sprzedaz wygladala dla kazdego >>>tygodnia w roku tak aby kazdy tydzien byl w nowej kolumnie tabeli. >> >>Nie daję gwarancji, że to zadziała, ale może jako wskazówka, >>do ew. poprawki :) >> >>SELECT s.idsprzedawcy, s.nazwisko, DATEPART(wk, datasprzedazy) AS >>tydzien, SUM(t.kwota) >>FROM sprzedawcy s JOIN transakcje t >>ON s.idsprzedawcy = t.idsprzedawcy >>GROUP BY s.idsprzedawcy, s.nazwisko, tydzien > > > Ok to jest prawie że to o co mi chodziło ;), nie do końca bo > stosując takie zapytanie dostaje 4 kolumny, a kolejne tygodnie są > zapisywane w kolejnych wierszach (także informacje niby jest ale nie > do końca w takiej formie jak chciałem). Co teraz zrobić abym dostał > tabelę z 52 kolumnami (każda kolumna odpowiada innemu tygodniowi).
Zastosuj PIVOT.
> Myślałem aby zrobić widok ale może też jest jakieś inne wyjście? >
Jeżeli danych wejściowych nie jest bardzo dużo, to widok będzie dobrym wyjściem. W przeciwnym razie załóż tabelę z wszystkimi kolumnami i aktualizuj ją trigerem lub jobem.
Pozdrawiam
-- Grzegorz Gruza Odpowiadając usuń "spamerom_nie." z adresu!!!
piotrk@ai.pl - 13-11-2006 00:44
kurciok@poczta.onet.pl napisał(a): > Ok to jest prawie że to o co mi chodziło ;), nie do końca bo Oosp, racja - to chodziło o kolumny, nie o wiersze - nie doczytałem :) Hmmm... chętnie poznałbym tego PIVOT'a, o którym pisze Grzegorz :)
Aczkolwiek - szukam w helpie do ASA i nie ma... z czego wnioskuję, że nie jest to w standardzie SQL, a tylko jako rozszerzenie na niektórych serwerach (?)
Pozdrawiam~~Piotrek~~pe3no.
Grzesiek G. - 13-11-2006 00:44
piotrk@ai.pl napisał(a): > kurciok@poczta.onet.pl napisał(a): > >> Ok to jest prawie że to o co mi chodziło ;), nie do końca bo > > Oosp, racja - to chodziło o kolumny, nie o wiersze - nie doczytałem :) > Hmmm... chętnie poznałbym tego PIVOT'a, o którym pisze Grzegorz :) > > Aczkolwiek - szukam w helpie do ASA i nie ma... z czego wnioskuję, > że nie jest to w standardzie SQL, a tylko jako rozszerzenie na > niektórych serwerach (?)
Dokładnie. Pytanie dotyczyło MS SQL 2005, na którym jest PIVOT. Na ASA pozostaną pewnie 52 casy na 52 tygodnie.
Pozdrawiam
-- Grzegorz Gruza Odpowiadając usuń "spamerom_nie." z adresu!!!
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Jak =?ISO-8859-2?Q?zamieni=E6_dwa_pola_jednej_kolumny_?==?ISO-8859-2?Q?w_dw=F3ch_rekordach_za_pomoc=B1_jednego_zapyt? ==?ISO-8859-2?Q?ania=3F?=
[mysql] =?ISO-8859-2?Q?po=B3=B1czenie_tabel_wg_kolumn=2C_?==?ISO-8859-2?Q?nie_wierszy?=
ms sql server - =?ISO-8859-2?Q?domy=B6lny_format_kolumn_ty?==?ISO-8859-2?Q?pu_datetime?=
[ORACLE] Dodanie kolumny typu BLOB - =?ISO-8859-2?Q?wp=B3yw_na?==?ISO-8859-2?Q?_wydajno=B6c?=
=?ISO-8859-2?Q?=5BORACLE=2C_ORDER_BY=5D_Czy_indeksowane_?==?I SO-8859-2?Q?kolumny_przy=B6piesz=B1_sortowanie=3F?=
pytanie o zapytanie z having count = count z innej kolumny
[MySQL/PHP] Wyszukiwanie rekordu przez kolumnę wskazaną przez zmienną
=?iso-8859-2?q?Pytanie_SQL__spe=B3niaj=B1ce_wiecej_jak_jeden_ warunek_na_jednej_kolumnie=2E?=
=?iso-8859-2?Q?=5BMSSQL2005=5D_Zawarto=B6c_kolumny_varbinary= 28max=29_?=
SELECT MAX(nazwaPola) FROM tabela WHERE .... i ORA-01405: pobran? warto?ci? kolumny jest NULL
zanotowane.pldoc.pisz.plpdf.pisz.plnawschodzie.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 |
|