[SSRS/SQL]Count van een count in chart weergeven

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 13-09 16:24

Haan

dotnetter

Topicstarter
Ik zit met het volgende:

Ik moet een SSRS report maken, met daarin een chart.
Het probleem zit hem in het ophalen / bewerken van data zodat de chart toont wat ik wil.

Ik wil namelijk een aantal items tellen, en vervolgens in de chart tonen hoe vaak de unieke uitkomsten daarvan voorkomen. Voorbeeld om het wat duidelijker te maken.
SQL:
1
2
3
4
5
select count(field) as aantal
from bar
join foo on bar.id = foo.id
group by field
having count(field) > 0

Dit geeft bijv. deze lijst terug:
1
2
1
3
3
5

Van deze lijst wil ik dus vervolgens in een chart weergeven hoe vaak de unieke aantallen voorkomen, bovenstaande lijst zou dan vertaald moeten worden naar
AantalKomtVoor
12
21
32
40
51

Ik kom er nu dus niet uit hoe ik dit aan moet pakken, volgens mij moet het gewoon in een SQL query op te lossen zijn, maar ik krijg alleen syntax errors als ik de bovenstaande query als subquery wil gebruiken voor een tweede count.
Andere optie is misschien om met groupings in de chart te werken, maar dat wilde me ook niet lukken, ik denk ook dat SQL beter performt dan dat de tweede berekening in het rapport zit. (de eerste query geeft op het moment 400k regels terug)

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 13-09 16:24

Haan

dotnetter

Topicstarter
Volgens Google zou het volgende moeten werken:
SQL:
1
2
3
4
5
6
7
8
9
10
select aantal, count(*)
from
(
select count(field) as aantal
from bar
join foo on bar.id = foo.id
group by field
having count(field) > 0
)
group by aantal


Maar dat gaat volgens SQL 2008 fout op 2 plaatsen:
- aantal is niet bekend buiten de subquery
- de onderste GROUP BY is fout, verwacht wordt 'AS', 'ID' of 'QUOTED_ID' (wat dat ook mag zijn ;) )

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 20:12

Creepy

Tactical Espionage Splatterer

Eeeeh ja. Prima. En toen ben je natuurlijk zelf ook gaan zoeken hoe je die fouten kan oplossen? En daar kwam wat dan precies uit? Wat voor meer informatie heb je nog over je query? In welke database had dit wel moeten werken? We need more input. Domweg gevonden code neerplempen en zeggen dat dat een foutmelding oplevert is niet voldoende. Als ik het zo bekijk dan zou je het feit dat "AS" wordt verwacht en de melding dat aantal niet bekend is in de buitenste query toch een aardig hint in de goede richting moeten zijn.

[ Voor 21% gewijzigd door Creepy op 09-03-2010 08:45 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 13-09 16:24

Haan

dotnetter

Topicstarter
Je hebt helemaal gelijk. Ik heb op een of andere manier gewoon niet beseft wat de melding eigenlijk betekende (het was nog vroeg ;) ).
Het blijkt dus dat je een alias moet geven aan de subquery, en dan werkt het wel, ook al maak je niet eens gebruik van die alias.. Ik kan bijvoorbeeld 'as blaat' toevoegen voor de laatste group by en dan kan ik wel opeens 'aantal' gebruiken, dat is toch vreemd?

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Zo vreemd is dat niet. Elke tabel waar je uit selecteert moet gewoon een naam hebben. Default is dat gewoon de table name, maar aangezien het gewoon een query is, en er niet impliciet een naam gegenereerd word, moet je dus zelf een alias toewijzen.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”