Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Group by I formatiranje outputa

[es] :: MS SQL :: Group by I formatiranje outputa

[ Pregleda: 1934 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

01011011

Član broj: 561
Poruke: 2341
65.216.70.*



+2 Profil

icon Group by I formatiranje outputa05.08.2008. u 21:24 - pre 190 meseci
Select group by

imam sledeca polja kad uradim SELECT

Code:

DAY                 TIME
Sunday               Closed
Monday               8:00AM-5:00PM
Tuesday              8:00AM-5:00PM
Wednesday            8:00AM-5:00PM
Thursday             8:00AM-5:00PM
Friday               8:30AM-5:00PM
Saturday             Closed


E sad sta treba da uradim je to je trenutno sto dobijam iz baze podataka, a meni je potrebno da se uradi GROUP BY i da mi ovako izgleda ovaj specifican recordset
Code:


Mon, Tue, Wed & Thu          8:00AM-5:00PM
Fri                          8:30AM-5:00PM
Sat & Sun                    Closed


Da li je ovo moguce odraditi i kako?
 
Odgovor na temu

adopilot
Admir Hodžić
It menager
Sarajevo BiH

Član broj: 123492
Poruke: 134
217.199.135.*

Sajt: nemam ja to


Profil

icon Re: Group by I formatiranje outputa05.08.2008. u 23:02 - pre 190 meseci
Ja sam to uspijeo riještit isto taku uz pomoć ovog foruma.
Koristili smo pretvranje podataka u XML
dok ne napravim konačno riješenje pogledaj te temu
http://www.elitesecurity.org/t...smijestanje-vise-rekorda-jedan
S poštovanjem
 
Odgovor na temu

miq357
ISP Teh support
Beograd

Član broj: 56733
Poruke: 72
77.46.165.*

ICQ: 295440586


Profil

icon Re: Group by I formatiranje outputa05.08.2008. u 23:42 - pre 190 meseci
Ako recimo početna tabela izgleda ovako:
Code:

vreme            vrv    dan
Closed             1     Sunday
8:00AM-5:00PM     1    Monday
8:00AM-5:00PM     2    Tuesday
8:00AM-5:00PM     3    Wednesday
8:00AM-5:00PM     4    Thursday
8:30AM-5:00PM     1    Friday
Closed             2    Saturday


Za ovakav odgovor:
Code:

8:00AM-5:00PM      Monday, Tuesday, Wednesday, Thursday
8:30AM-5:00PM      Friday
Closed              Sunday, Saturday


Rešenje bi bilo:
Code:

  WITH X (vreme, CNT, lista, vrv, LEN)
      AS (
SELECT vreme, COUNT(*) OVER (PARTITION BY vreme),
           CAST(dan AS VARCHAR(100)), vrv, 1
  FROM test
 UNION ALL
SELECT X.vreme, X.CNT,
           CAST(X.lista + ', ' + E.dan AS VARCHAR (100)),
           E.vrv, X.LEN+1
   FROM test E, X
 WHERE E.vreme = X.vreme AND E.vrv > X.vrv
         )
SELECT vreme, lista
  FROM X
 WHERE LEN = CNT
 ORDER BY 1

Ovo je ovako na brzinu, moglo bi to verovatno i bolje da se izvede. U početni uslov je dodata još jedna kolona (vrv) jer sam ovo već imao ovako rešeno, ali mislim da je vrlo približno traženom i dosta za početak
 
Odgovor na temu

01011011

Član broj: 561
Poruke: 2341
65.216.70.*



+2 Profil

icon Re: Group by I formatiranje outputa06.08.2008. u 15:27 - pre 190 meseci
Ne ide mi ovako, pa sam odradio u C# Unutar koda sam napravio liste u koje sam ubacio ovo i sortirao kako mi treba.

Hvala na odgovorima :)
 
Odgovor na temu

adopilot
Admir Hodžić
It menager
Sarajevo BiH

Član broj: 123492
Poruke: 134
217.199.133.*

Sajt: nemam ja to


Profil

icon Re: Group by I formatiranje outputa07.08.2008. u 14:29 - pre 190 meseci
@miq357
Dobra je i ova sa WITH klauzulom ali kompikovana za shvatit

A može se i riješiti na ovaj način

Code:

/*-- podatci iz primjera --*/
create  table #test
(vreme   varchar(max),vrv varchar(max),dan varchar(max))

insert into #test
select 'Closed',             '1','Sunday'
union all
select '8:00AM-5:00PM','1','Monday'
union all
select '8:00AM-5:00PM','2','Tuesday'
union all
select '8:00AM-5:00PM','3','Wednesday'
union all
select '8:00AM-5:00PM','4','Thursday'
union all
select '8:30AM-5:00PM','1','Friday'
union all
select 'Closed','2','Saturday'


Code:

select 
(
select (left((dan),3)+', ')  as [data()]
from #test t
where t.vreme=b.vreme
order by t.dan
for xml path('') 
) as ado
,b.vreme
from #test b
group by b.vreme


Možda je ova galerija bogdu jednostavnija
Lijep pozdrav

S poštovanjem
 
Odgovor na temu

[es] :: MS SQL :: Group by I formatiranje outputa

[ Pregleda: 1934 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.