Forum » Programiranje » [sql]-stevilka vrstic
[sql]-stevilka vrstic
billgates ::
V šoli imam nalogo narediti v t-sql stolpec (column) v tabeli employees, da bo izpisalo številko vrstice(1,2,3,...). Ta se ne sme spremeniti v nobenem primeru (če dam ASC, DESC). Kako bi se to dalo rešiti z alter table?
destiny ::
Torej hočeš met vedno pri nekem employee-u isto številko ali hočeš met vedno 1 na vrhu, ne glede na to kako je tabela urejena?
destiny ::
hm, prva stvar ki mi pride na pamet je dense_rank funkcija, ki bi imela isti sort kot glavni order by + unique id, ne podpirajo pa tega vsi database pogoni... npr. mssql server ma to šele od 2005 naprej.
billgates ::
Morda za začetek samo kako bi mi izpisalo vrstico (asc,desc ni važno). Zaenkrat imam:
ALTER TABLE employees
ADD Stevilke INT
ALTER TABLE employees
ADD Stevilke INT
destiny ::
s tem ne boš nič dosegel. Fizično polje ti tu ne bo pomagalo. Ti rabiš nek virtual column...
destiny ::
jest bi napisal nekaj v stilu:
Edit: order by v ranku more met zraven še unique id, da bo kazal pravilno, če osnovni order nima unique identifikatorja
select dense_rank() over (order by MojŽeljeniOrder,employeeid) rnk, employeeid,name,... from employees order by MojŽeljeniOrder
Edit: order by v ranku more met zraven še unique id, da bo kazal pravilno, če osnovni order nima unique identifikatorja
Zgodovina sprememb…
- spremenil: destiny ()
destiny ::
ja sej to sem mu že prej napisal, s tem da oracle nima row_number(), ima pa rownum. dense_rank podpirata oba, tako oracle kot mssql server 2005 + novejši
borchi ::
ah, vidim zdaj. sori, sem spregledal...
@billgates: kaj pomeni, da se "ne sme spremeniti v nobenem primeru (če dam ASC, DESC)"? a da mora bit prva vrstica v resultset-u vedno 1, druga 2 itd.?
@billgates: kaj pomeni, da se "ne sme spremeniti v nobenem primeru (če dam ASC, DESC)"? a da mora bit prva vrstica v resultset-u vedno 1, druga 2 itd.?
l'jga
billgates ::
ah, vidim zdaj. sori, sem spregledal...
@billgates: kaj pomeni, da se "ne sme spremeniti v nobenem primeru (če dam ASC, DESC)"? a da mora bit prva vrstica v resultset-u vedno 1, druga 2 itd.?
Da, točno tako.
bmandl ::
To je nekaj podobnega, kar ti želiš. Preuredi tako, da bo ZapSt neodvisna od tabele...
ALTER TABLE Orders ADD SodoLiho char(4) DECLARE @ZapSt int SET @ZapSt = 1 DECLARE @id int DECLARE kurzor CURSOR FOR SELECT OrderID FROM Orders OPEN kurzor FETCH NEXT FROM kurzor INTO @id WHILE (@@FETCH_STATUS = 0) BEGIN UPDATE Orders SET ZapSt = @ZapSt WHERE @id = OrderID SET @ZapSt = @ZapSt + 1 FETCH NEXT FROM kurzor INTO @id END CLOSE kurzor DEALLOCATE kurzor
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | SQL vprašanjeOddelek: Programiranje | 1107 (706) | MrStein |
» | Siol uvaja digitalno kabelsko televizijo na optiki (strani: 1 2 3 )Oddelek: Omrežja in internet | 23549 (8936) | alexz |
» | Nakup namiznega računalnikaOddelek: Kaj kupiti | 1593 (1322) | kerco46 |
» | Pomoč nastavitev UTMS modema T-2 PartisOddelek: Pomoč in nasveti | 1405 (1298) | KoMar- |
» | anketa z vec moznostmiOddelek: Izdelava spletišč | 1612 (1491) | Packač |