Knifflige View mit row_number()

17/03/2010 - 19:23 von Jochen Rieseberg | Report spam
Hallo zusammen,

ich muß eine knifflige View erstellen, die folgendes ausgeben soll:

Anzahl Anzahl
Kunde Objekt Kundenr Objektnr
1 1 100 ABC
2 1 101 FFF
2 101 FFR
3 1 102 HHH
2 102 GHJ
3 102 LKH
4 1 103 KKK
5 1 104 OKL

etc etc

Ich habe einiges ausprobiert mit ROW_NUMBER() OVER (ORDER BY... und
ROW_NUMBER() OVER (PARTITION BY...
Was mir nicht gelungen ist, ist die erste Spalte so darzustellen, das Kunde
nicht weitergezàhlt wird, wenn nur die Objekte eines Kunden hochgezàhlt
werden.
Hat irgendjemand eine Idee?

Viele Grüße
Jochen Rieseberg
 

Lesen sie die antworten

#1 Christoph Muthmann
18/03/2010 - 09:59 | Warnen spam
Jochen Rieseberg wrote:
Hallo zusammen,

ich muß eine knifflige View erstellen, die folgendes ausgeben soll:

Anzahl Anzahl
Kunde Objekt Kundenr Objektnr
1 1 100 ABC
2 1 101 FFF
2 101 FFR
3 1 102 HHH
2 102 GHJ
3 102 LKH
4 1 103 KKK
5 1 104 OKL

etc etc

Ich habe einiges ausprobiert mit ROW_NUMBER() OVER (ORDER BY... und
ROW_NUMBER() OVER (PARTITION BY...
Was mir nicht gelungen ist, ist die erste Spalte so darzustellen, das
Kunde nicht weitergezàhlt wird, wenn nur die Objekte eines Kunden
hochgezàhlt werden.
Hat irgendjemand eine Idee?




Hallo Jochen,
das geht auch besser mit Dense_Rank und Rank!

declare @daten as table(Kundenr integer, Objektnr varchar(3))
insert into @daten(Kundenr, Objektnr)
select 100 as Kundenr, 'ABC' as Objektnr
union all
select 101 , 'FFF'
union all
select 101 , 'FFR'
union all
select 102 , 'HHH'
union all
select 102 , 'GHJ'
union all
select 102, 'LKH'
union all
select 103, 'KKK'
union all
select 104, 'OKL'

Select *
from @daten

select dense_rank() OVER ( ORDER BY Kundenr) as Anz_Kunde,
Rank() OVER (Partition by Kundenr ORDER BY Objektnr) as Anz_Objekte,
*
from @daten
order by Kundenr, Objektnr

Einen schönen Tag noch,
Christoph
Microsoft SQL Server MVP
http://www.insidesql.org

Ähnliche fragen