Jacek Eggert

Jacek Eggert Księgowość

Temat: Pomoc w budowie zapytania

Hi,

Mam tabele:

ID DATE VAR1 VAR2 ........ VAR256
----------------------------------------------
1 2009 A A B
2 2010 C D F
3 2011 D G X
.
.
n n n n n n

i chce zrobić rozkład każdej ze zmiennej z kolumny - od VAR1 do VAR256. Pisząc 256 kwerek wyglądało by to mniej więcej tak:

select t.date, t.var1, count(*)
from tabela t
group by t.date, t.var1;

Wynik wrzucam do Excela, robię tabele przestawna, wykres i jest to czego potrzebuję - graficzny rozkład zmiennej po dacie. Czy ma ktoś pomysł na kwerkę, co mi zrobi wynik od razu dla wszystkich zmiennych? Jedna kwerka, jeden input do excela, jedna tabela przestawna, wykres przełączam dla każdej ze zmniennej wybierając ją z rozwijanej listy wykresu przestawnego

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora
Jacek Eggert

Jacek Eggert Księgowość

Temat: Pomoc w budowie zapytania

Jest to jakieś rozwiązanie, dzięki. Zobaczymy jak się arkusz zachowa jak już zacznę analizy na docelowych ilościach danych, czyli jakieś 50 tys rekordów, 300 kolumn :)

Hmm, 300 kolumn nie wejdzie w jeden arkusz, ale to nie problem akuratJacek Eggert edytował(a) ten post dnia 17.05.11 o godzinie 15:57

konto usunięte

Temat: Pomoc w budowie zapytania

Jacek Eggert:
Jest to jakieś rozwiązanie, dzięki. Zobaczymy jak się arkusz zachowa jak już zacznę analizy na docelowych ilościach danych, czyli jakieś 50 tys rekordów, 300 kolumn :)

Hmm, 300 kolumn nie wejdzie w jeden arkusz, ale to nie problem akurat

wejdzie jak masz Excela 2007 lub 2010

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora

konto usunięte

Temat: Pomoc w budowie zapytania

Jacek Eggert:
Jest to jakieś rozwiązanie, dzięki. Zobaczymy jak się arkusz zachowa jak już zacznę analizy na docelowych ilościach danych, czyli jakieś 50 tys rekordów, 300 kolumn :)

Hmm, 300 kolumn nie wejdzie w jeden arkusz, ale to nie problem akurat

jest takie coś jak UNPIVOT z poziomu MSSQL-a

konto usunięte

Temat: Pomoc w budowie zapytania

Wojciech Gardziński:
A gdzie 300 kolumn ma wchodzić do arkusza?
Po co E2007/10?

Odpiwotowanie właśnie na tym polega, żeby z 300 kolumn zrobić tych kolumn kilka.

jak rozwiniesz dane do si e robi problem, bo starsze wersje nie będą mogły pokazać wszystkich kolumn na raz
Jacek Eggert

Jacek Eggert Księgowość

Temat: Pomoc w budowie zapytania

Mam E2000, ale i tak chyba najrozsądniej będzie, jak zrobię kilka arkuszy, po np 50 kolumn dla każdej tabeli przestawnej.
Jeśli załaduję wszystkie dane do jednego arkusza, to arkusz będzie ważył jakieś 150 - 200 MB, a to już chyba lekka przesada, co? :)
Piotr Naszarkowski

Piotr Naszarkowski Architekt Business
Intelligence

Temat: Pomoc w budowie zapytania

Cześć, możesz spróbować z darmowym dodatkiem do Excela jak Analysis Tool Pack:
http://www.cpearson.com/excel/atp.htm
http://www-unix.oit.umass.edu/~evagold/excel.html

Histogramy na pewno zrobisz z jego użyciem. Pytanie jak z załadowaniem danych wejściowych do arkusza... :)

Pozdrawiam
Piotr

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora
Piotr Guzik

Piotr Guzik BL Solutions -
Usługi informatyczne

Temat: Pomoc w budowie zapytania

Jacek Eggert:
Hi,

Mam tabele:

ID DATE VAR1 VAR2 ........ VAR256
----------------------------------------------
1 2009 A A B
2 2010 C D F3 2011 D G X
.
.
n n n n n n

i chce zrobić rozkład każdej ze zmiennej z kolumny - od VAR1 do VAR256. Pisząc 256 kwerek wyglądało by to mniej więcej tak:

select t.date, t.var1, count(*)
from tabela t
group by t.date, t.var1;

Wynik wrzucam do Excela, robię tabele przestawna, wykres i jest to czego potrzebuję - graficzny rozkład zmiennej po dacie. Czy ma ktoś pomysł na kwerkę, co mi zrobi wynik od razu dla wszystkich zmiennych? Jedna kwerka, jeden input do excela, jedna tabela przestawna, wykres przełączam dla każdej ze zmniennej wybierając ją z rozwijanej listy wykresu przestawnego

proponuję zmienić trochę schemat bazy danych - można wtedy stworzyć jedno zapytanie SQL, które wszystkie dane wyciągnie za jednym zamachem.
Schemat mógłby być następujący:
Tabela:
rozkład: (data, nazwa zmiennej, wartosc_zmiennej)

Zapytanie SQL:
select data, nazwa_zmiennej, wartosc_zmiennej, count(*)
from rozklad
gourp by data, nazwa_zmiennej, wartosc_zmiennej

jeśli nie możesz zmienić schematu tabeli, zrób widok.

Temat: Pomoc w budowie zapytania

--A ja bym zrobił to tak. Najpierw założyłbym user friendly tabelę:

create table tabela2
(
id int,
data datetime,
pole varchar(8),
zmienna varchar(8)
)

--potem bym ją wypełnił:

declare @i int,@sql varchar(512)
set @i=1
while @i<=256
begin
set @sql='insert into tabela2 (id,data,pole,zmienna) select id,data,''var' + cast(@i as varchar) + ''',var'
+ cast(@i as varchar) + ' from tabela'
exec (@sql);
set @i=@i+1
end

--a potem bym sobie robił dowolne raporty np:
select t.data, t.zmienna, count(*)
from tabela2 t
group by t.data, t.zmienna;

--Pozdrawiam
Piotr Guzik

Piotr Guzik BL Solutions -
Usługi informatyczne

Temat: Pomoc w budowie zapytania

Rafał Pietrzyk:
--potem bym ją wypełnił:

declare @i int,@sql varchar(512)
set @i=1
while @i<=256
> begin
set @sql='insert into tabela2 (id,data,pole,zmienna) select id,data,''var' + cast(@i as varchar) + ''',var'
+ cast(@i as varchar) + ' from tabela'
exec (@sql);
set @i=@i+1
end

Jeśli SQL Server jest w wersji 2005, lub wyższej, to do wypełnienia zamiast pętli oraz dynamic query można użyć klauzuli UNPIVOTPiotr Guzik edytował(a) ten post dnia 06.07.11 o godzinie 13:06

Następna dyskusja:

pomoc w optymalizacji zapyt...




Wyślij zaproszenie do