T-SQL: (dont) Know how
Kordian - 21-07-2006 01:19
T-SQL: (dont) Know how
witam,
Mam bazę danych, w której składowane są dane wraz z datą w formacie '2006-06-06 06:06'. Potrzebuję napisac zapytanie, które grupowałoby dla zadanego okresu czasu (np tydzień, miesiąc) dane tak, by pokazywały: między 00:00 a 08:00 były takie wartości między 08:00 a 16:00 były takie między 16:00 a 00:00 były takie
i tak dla każdego dnia z przedziału czasu. Mnie wychodzi, że trzeba użyć kursorów i 3 zaytań oddzielnych, ale jestem amatorem ;-))
Pozdr. Kordian
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Jacek Stawicki - 21-07-2006 01:19
Użytkownik "Kordian" <kordian28WYTNIJTO@poczta.onet.pl> napisał w wiadomości news:7c66.000000e7.44bf84f0@newsgate.onet.pl... > witam, > > Mam bazę danych, w której składowane są dane wraz z datą w formacie > '2006-06-06 > 06:06'. Potrzebuję napisac zapytanie, które grupowałoby dla zadanego > okresu > czasu (np tydzień, miesiąc) dane tak, by pokazywały: > między 00:00 a 08:00 były takie wartości > między 08:00 a 16:00 były takie > między 16:00 a 00:00 były takie > > i tak dla każdego dnia z przedziału czasu. Mnie wychodzi, że trzeba użyć > kursorów i 3 zaytań oddzielnych, ale jestem amatorem ;-))
select count(*), convert(varchar(10), OrderDate, 102), sum(case when datepart(hour, OrderDate) between 00 and 08 then 1 else 0 end) '00:00-08:00', sum(case when datepart(hour, OrderDate) between 08 and 16 then 1 else 0 end) '08:00-16:00', sum(case when datepart(hour, OrderDate) between 16 and 24 then 1 else 0 end) '16:00-24:00' from Sales.SalesOrderHeader group by convert(varchar(10), OrderDate, 102) order by 2
Kordian - 21-07-2006 01:19
> > Użytkownik "Kordian" <kordian28WYTNIJTO@poczta.onet.pl> napisał w wiadomości > news:7c66.000000e7.44bf84f0@newsgate.onet.pl... > > witam, > > > > Mam bazę danych, w której składowane są dane wraz z datą w formacie > > '2006-06-06 > > 06:06'. Potrzebuję napisac zapytanie, które grupowałoby dla zadanego > > okresu > > czasu (np tydzień, miesiąc) dane tak, by pokazywały: > > między 00:00 a 08:00 były takie wartości > > między 08:00 a 16:00 były takie > > między 16:00 a 00:00 były takie > > > > i tak dla każdego dnia z przedziału czasu. Mnie wychodzi, że trzeba użyć > > kursorów i 3 zaytań oddzielnych, ale jestem amatorem ;-)) > > select > count(*), > convert(varchar(10), OrderDate, 102), > sum(case when datepart(hour, OrderDate) between 00 and 08 then 1 else 0 > end) '00:00-08:00', > sum(case when datepart(hour, OrderDate) between 08 and 16 then 1 else 0 > end) '08:00-16:00', > sum(case when datepart(hour, OrderDate) between 16 and 24 then 1 else 0 > end) '16:00-24:00' > from > Sales.SalesOrderHeader > group by > convert(varchar(10), OrderDate, 102) > order by 2
Stary...MEGASZACUNEK!!! Ja to napisałem za pomocą procedury, która szła 1000x wolniej!!! Dzięki i pozdrawiam.
Kordian
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
jak to =?ISO-8859-2?Q?zrobi=E6=2E=2E=2E=3F_TSQL_sql_server?==?ISO-8859-2?Q?_?=
Jak =?windows-1250?Q?pobra=E6_szacowan=B9_wielko=9C=E6_zbiory_wy nikowego_w_MS?==?windows-1250?Q?_SQL_2005=3F?=
=?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?=
=?ISO-8859-2?Q?k=B3opot_z_uruchomieniem_MY_SQL_dla_C?==?ISO-8859-2?Q?MS_i_CRM_na_Fedora_Core_3?=
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?=
zanotowane.pldoc.pisz.plpdf.pisz.plfelgiuzywane.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 |
|