Forum » Programiranje » T-SQL Partition by v SQL2000
T-SQL Partition by v SQL2000
nurmaln ::
Za rešitev enega problema nujno rabim spodnjo funkcijo, ko sem jo našel se bil vesel k radio...
Potem sem jo hotel uporabiti na bazi, pa mi je server povedal da SQL2000 te funkcije ne pozna (tetiral sem na SQL2005)
Se komu sanja kako bi to funkcijo predelal, da bi dobil isti rezultat v SQL2000?
SELECT [No_]
,[Text]
,row_number()
over ( partition by [No_]
order by [Line No_] ) as seqno
from [Test].[dbo].[ETL]
Potem sem jo hotel uporabiti na bazi, pa mi je server povedal da SQL2000 te funkcije ne pozna (tetiral sem na SQL2005)
Se komu sanja kako bi to funkcijo predelal, da bi dobil isti rezultat v SQL2000?
SELECT [No_]
,[Text]
,row_number()
over ( partition by [No_]
order by [Line No_] ) as seqno
from [Test].[dbo].[ETL]
frudi ::
preberi si tole, morda bo pomagalo. Ampak kot piše v članku - dobro dela samo za majhne sete podatkov, kjer rangiraš unique stolpec (torej stolpec, v katerem se podatki ne ponavljajo).
Lahko tudi uporabiš nekaj takega:
Tudi za to velja, da deluje le, če rangiraš po neponavljajočih podatkih.
Še ena rešitev, ki deluje v vsakem primeru:
- narediš začasno tabelo, z enakimi stolpci, kot dbo.ETL + dodaten IDENTITY stolpec
- narediš select željenih podatkov, pravilno sortiranih, ampak jih ne vrneš, temveč insertaš v to začasno tabelo
- vrneš select iz te začasne tabele, kjer ti dodaten IDENTITY stolpec predstavlja številko vrstice
- zbrišeš začasno tabelo
Seveda pa moraš v tem primeru vse to narediti znotraj stored procedure.
Lahko tudi uporabiš nekaj takega:
SELECT (SELECT COUNT(*) FROM dbo.ETL AS C WHERE C.[No_] <= E.[No_]) AS ROW_NUMBER, E.[No_], E.[Text] FROM dbo.ETL AS E ORDER BY E.[No_]
Tudi za to velja, da deluje le, če rangiraš po neponavljajočih podatkih.
Še ena rešitev, ki deluje v vsakem primeru:
- narediš začasno tabelo, z enakimi stolpci, kot dbo.ETL + dodaten IDENTITY stolpec
- narediš select željenih podatkov, pravilno sortiranih, ampak jih ne vrneš, temveč insertaš v to začasno tabelo
- vrneš select iz te začasne tabele, kjer ti dodaten IDENTITY stolpec predstavlja številko vrstice
- zbrišeš začasno tabelo
Seveda pa moraš v tem primeru vse to narediti znotraj stored procedure.
1ACDoHVj3wn7N4EMpGVU4YGLR9HTfkNhTd... in case I've written something useful :)
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | SQL uporaba imena spremenljivke stringuOddelek: Programiranje | 976 (870) | BlueKnight |
» | SQL težavaOddelek: Programiranje | 5149 (4431) | joseti |
» | T-SQL FIRST / TOP / MAX...Oddelek: Programiranje | 1494 (1494) | frudi |
» | [T-SQL] Kako vnest podatek v bazo in da ti hkrati vrne id?Oddelek: Programiranje | 2891 (2609) | dmok |
» | Vprašanje za SQL poznavalceOddelek: Programiranje | 1224 (1049) | zdravc |