2016-06-30 11 views
-1

Gibt es eine bessere Möglichkeit, Zeilen einer ID basierend auf verschiedenen Kriterien zu zählen?Mehrfache Zählungen auf derselben SQL Server 2012-Tabelle

Zum Beispiel habe ich eine Tabelle, die mit Säulen:

id, state, city 

Meine Frage:

select 
    ID, city, state, UScount, statecount, citycount 
from  
    (select count(*) USCount, ID 
    from table 
    group by ID) UScount 
inner join 
    (select count(*) stateCount, ID 
    from table 
    group by ID, state) statecount on UScount.ID = Statecount.ID 
inner join 
    (select count(*) cityCount, ID 
    from table 
    group by ID, city) citycount on UScount.ID = citycount.ID 

ich gerade versuche, dies, weil in Wirklichkeit aufzuräumen habe ich etwa 20 verschiedene Zählungen und sieht nicht sehr schön aus

+0

'select sum (fall wenn field = 'foo' dann 1 else 0) als foo_count' –

+0

@MarcB nicht wirklich die Gruppe durch Änderung – Fredou

+0

Beispieldaten und gewünschte Ergebnisse würden erklären, was Sie versuchen zu tun. –

Antwort

5

Suchen Sie nach Fensterfunktionen?

select t.*, 
     count(*) over() as cnt, 
     count(*) over (partition by state) as cnt_state, 
     count(*) over (partition by state, city) as cnt_state_city 
from table t; 

Ich bin nicht sicher, ob id sollte ein Teil der partition by oder nicht.

+0

Ich würde das posten! – Fredou

+0

Explosion - 30 Sekunden geschlagen! – Siyual

+0

perfekt danke – user2615302

Verwandte Themen