[Access]Contatore nelle query con rottura livello

martedì 13 aprile 2010 - 13.00

Mappa Profilo | Junior Member

Ciao a tutti. Ho una query dove voglio un campo contatore ma con rottura di livello a nuovo valore riparte da 1. Ho questa query ma non so' come modificarla per la mai esigenza

SELECT (Select Count(1) FROM mytab as a
where a.campo1 <= mytab.campo1) AS sequenza,mytab, mytab.campo3
FROM mytab
ORDER BY mytab, mytab;

Grazie mille e ciao

dinoxet Profilo | Senior Member

provato con questa funzione?

row_number() over (partition by col_n [, col_m ... ] order by col_1 [, col_2 ...])


fammi sapere

la clausola partitio ti permette appunto la rottura.


DINOXET
__________________________________________
impossible is only a word

lbenaglia Profilo | Guru

>Ciao a tutti. Ho una query dove voglio un campo contatore ma
>con rottura di livello a nuovo valore riparte da 1. Ho questa
>query ma non so' come modificarla per la mai esigenza
>
>SELECT (Select Count(1) FROM mytab as a
>where a.campo1 <= mytab.campo1) AS sequenza,mytab, mytab.campo3
>FROM mytab
>ORDER BY mytab, mytab;

Ciao Paolo,

Quella query non è corretta.
Per rispondere adeguatamente dovremmo avere la struttura reale della tabella, alcune righe di prova ed il risultato atteso.
Ti invito ad allegare un mdb di esempio.

>Grazie mille e ciao
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

lbenaglia Profilo | Guru

>provato con questa funzione?
>
>row_number() over (partition by col_n [, col_m ... ] order by
>col_1 [, col_2 ...])

Non credo dato che Access (inteso come JET) non la supporta

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Mappa Profilo | Junior Member

Ciao a tutti e grazie per la risppsta. Il risulatato che vorrei ottenere è simile a questo

Boston Bruins 1
Boston Celtics 2
Boston Red Sox 3
Chicago Bears 1
Chicago Black Hawks 2
Chicago Cubs 3
Chicago White Sox 4
New England Patriots 1
New York Giants 1
New York Islanders 2
New York Jets 3
New York Knicks 4
New York Mets 5
New York Rangers 6
New York Yankees 7

lbenaglia Profilo | Guru

>Ciao a tutti e grazie per la risppsta. Il risulatato che vorrei
>ottenere è simile a questo
Si, e l'mdb dov'è?

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Mappa Profilo | Junior Member

ho provato anche con questo ma mi conta il valore di cmp1. Se ho 6 valore uguali mi scrive nella colonna contatore 6 6 6 6 6 6

SELECT mytab.cmp1 mytab.cmp2, mytab.cmp3,
(SELECT
COUNT(Self.cmp1)
FROM
[mytab] AS [Self]
WHERE
[Self].[cmp1] <= [mytab].[OrdineSAP]) AS contatore
FROM mytab
ORDER BY mytab.cmp1, mytab.cmp2 DESC;

PS: purtroppo non posso allegare mdb causa policy e restrizioni del gruppo per cui lavoro
Ciao

lbenaglia Profilo | Guru

>PS: purtroppo non posso allegare mdb causa policy e restrizioni
>del gruppo per cui lavoro
Anche un esempio che puoi preparare tu viola le policy?
Mi raccomando, posta il result set finale in base alle righe presenti nella tabella di esempio.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5