2012-07-26 16 views
10

Jak mogę wdrożyć„oznacza”z następującym stwierdzeniem psuedo-SQL:TSQL "Gdzie Stan

COUNT(distinct id where attribute1 > 0) 

Innymi słowy, w jaki sposób mogę zrobić warunkowe, odrębne oświadczenia liczenia?

Dzięki!

Odpowiedz

27

dobrze, jeśli można filtrować całą kwerendę, a następnie LittleBobbyTables już the answer dla Ciebie. Jeśli nie, możesz uzyskać tę kolumnę w następujący sposób:

+0

Potrzebowałem go jako część zapytania. Co jest złego w używaniu go w funkcji agregującej? – CodeKingPlusPlus

+0

+1 i pamiętasz poprawnie: gdy 'ELSE' jest pominięte, domyślnie jest" ELSE NULL ". Inaczej mówiąc, nie rozumiem tego "problemu z wydajnością" w odniesieniu do agregacji warunkowej. Mam na myśli, jakie są alternatywy dla 'CASE' w funkcji agregującej (na przykład, kiedy twoje zapytanie musi zwrócić zarówno liczbę warunkową, jak i bezwarunkową)? –

+0

Rozumiem, ale już to określiłeś w swojej odpowiedzi, więc twoje ostatnie zdanie brzmi, jakby ktoś był zirytowany * całkowicie zgodnym z prawem * użyciem warunkowej agregacji. Chciałem tylko wyjaśnić, czy naprawdę tak myślisz. I ogólnie, zgadzam się z tobą, że to coś * może * być wykorzystywane, jak wszystko inne. –

2

dość dużo miał go:

SELECT COUNT(DISTINCT [ID]) AS DistinctID 
FROM YourTable 
WHERE attribute1 > 0