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

smiještanje više rekorda u jedan

[es] :: MS SQL :: smiještanje više rekorda u jedan

[ Pregleda: 2889 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

adopilot
Admir Hodžić
It menager
Sarajevo BiH

Član broj: 123492
Poruke: 134
217.199.133.*

Sajt: nemam ja to


Profil

icon smiještanje više rekorda u jedan03.12.2007. u 15:43 - pre 199 meseci
Poštovani !

Postoji li neki jednostavan način da više rekorda strpam u jedan rekord kod select galerije,

ako je rezultat galerije select * from #temp

kolona_a
a
b
c
d

ja bih želo napisati upit koji ce reci


select kolona_ado from #temp

a rezultat da dobijem

kolona_ado
a,b,c,d,




Lijep pozdrav
Admir


S poštovanjem
 
Odgovor na temu

Koce
DBA
Serbia, Belgrade

Član broj: 59217
Poruke: 144
*.vektor.net.



+1 Profil

icon Re: smiještanje više rekorda u jedan04.12.2007. u 12:00 - pre 199 meseci
ako nemas previse podataka mozes ovako:

Declare @Sentence as varchar(8000)
SET @Sentence = ''
SELECT @Sentence = @Sentence + ''''+ kolona + '''' + ', '
FROM Tabela
print @Sentence

inace moras kroz cursor
 
Odgovor na temu

CallMeSaMaster

Član broj: 43611
Poruke: 466
*.hermes.si.



+1 Profil

icon Re: smiještanje više rekorda u jedan05.12.2007. u 13:23 - pre 199 meseci
To nije rjesenje, jerk kako i sam kaze "ako imas malo podataka"(8000)...
 
Odgovor na temu

Zidar
Canada

Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: smiještanje više rekorda u jedan05.12.2007. u 13:44 - pre 199 meseci
Na ovaj nacin nemas ogranicenja:

Code:

CREATE TABLE #Temp(Kolona_ado varchar(5))
INSERT INTO #Temp VALUES ('a')
INSERT INTO #Temp VALUES ('b')
INSERT INTO #Temp VALUES ('c')
INSERT INTO #Temp VALUES ('d')
INSERT INTO #Temp VALUES ('e')

SELECT 
     Kolona_ado + ',' AS [data()] 
FROM #Temp
FOR XML PATH('')

XML_F52E2B61-18A1-11d1-B105-00805F49916B
-------------------------------------------
a, b, c, d, e,

(5 row(s) affected)


Kakv kursor, kakvi bakrači
Samo, ima jedan mali problem - kome treba ima kolone "XML_F52E2B61-18A1-11d1-B105-00805F49916B" ?

Ima i za to resenje:

Code:

SELECT 
(
SELECT 
     Kolona_ado + ',' AS [data()] 
FROM #Temp
FOR XML PATH('')
) AS Rezultat

Rezultat
-------------------
a, b, c, d, e,

(1 row(s) affected)


 
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: smiještanje više rekorda u jedan06.12.2007. u 13:10 - pre 199 meseci
Hvala na odgovima
Obadva upita rade stim što ja koristim onaj koji je objavio Zidar
jer se samo jednom koristi SELECT pa me apikacija ne zafrkava.

Inače ovaj upit koristim kao podupit u transakcijama zaključivanja robnih dokumenata,
Upit mi kontroliše da li će poslije zaključenja dokumenta artikli otići u minus na lageru te mi javlja koji su to arikli otišli u minus na lagerui.
Ukoliko je rezultat upita null onda će transakcija dokumenta biti potvrđena.

Kako se ranije nisam sretao sa komandama

[data()] i FOR XML PATH('')

Vas pitam koliko je ovo zahtjevno za server, to jeste da li troši neke ogromne preformanse ako se u upitu pojavljuje u najgoru ruku do 100 rekorda
koje ce smjestiti u jedan

i drugo pitanje koliko je panetno držati transakciju ne porvrđenu dok se ovaj upit ne odradi.

Sada se bojim da ne izazovem DEDLOCKOVE na serveru ukoliko je transakcija upisa otvorena dok se ne izvrši upit koji cu navesti




Lijep pozdrav
Unaprijed zahvalan

Code:

select 
case 
when 
(select
            
                count(*)
            from
                (select art_id, sum(kol) as kol
                    from sdo
                    where doc_id = :id and '#skl_fin_tip#' <>'F'
                    group by art_id) as p
                left outer join lager l on (p.art_id = l.art_id and l.skl_id = :skl_id)
                left outer join art a on l.art_id = a.id
            where
                (Round(l.kolicina,4)+Round(p.kol,4)) < 0)=0 then Convert(Bit,1)
else 
Convert(Bit,0)
end as Valid
,'Skladište '+(select naziv from skladiste where id = (:skl_id)) + '. Tražena količina prelazi u minus na lageru za artikal: '+
(
select
            
                RTRIM ((a.sifra+' '+a.naziv))+ ';  ' as [data()]
            from
                (select art_id, sum(kol) as kol
                    from sdo
                    where doc_id = :id and '#skl_fin_tip#' <>'F'
                    group by art_id) as p
                left outer join lager l on (p.art_id = l.art_id and l.skl_id = :skl_id)
                left outer join art a on l.art_id = a.id
            where
                (Round(l.kolicina,4)+Round(p.kol,4)) < 0
            
for XML path ('')
) as Msg

S poštovanjem
 
Odgovor na temu

Zidar
Canada

Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: smiještanje više rekorda u jedan06.12.2007. u 16:02 - pre 199 meseci
@adopilot: Nemas problema za brzinu. Upravo sam spojio zaresom 70,000 rekorda za manje od 1/10 sekunde.

Inace, kod koji je ostavio Koce je sasvim OK. To je bio moj omiljeni metod dok nisam saznao za FOR XML PATH("")

Eto, i XML je ispao dobar za nesto
 
Odgovor na temu

[es] :: MS SQL :: smiještanje više rekorda u jedan

[ Pregleda: 2889 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

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