RE: Please help

RE: Please help

 

  

How about using GROUP BY, on a column defined using CASE?

Notes:
-- a CASE statement stops evaluating at the first WHEN that is true.
-- "GROUP BY 1" means use the contents of column 1

For example:

SELECT
AgeBracket_GROUP =
CASE
WHEN AGE IS NULL OR AGE = 0
THEN 0

WHEN AGE < 18
THEN 1

WHEN AGE <= 24
THEN 2

WHEN AGE <= 25
THEN 3

WHEN AGE <= 30
THEN 4

WHEN AGE <= 44
THEN 5

WHEN AGE <= 49
THEN 6

ELSE 9
END,
AgeBracket_LITERAL =
CASE
WHEN AGE IS NULL OR AGE = 0
THEN 'UNKNOWN AGE'

WHEN AGE < 18
THEN '<18'

WHEN AGE <= 24
THEN '18-24'

WHEN AGE <= 25
THEN '25-30'
.
.
.
ELSE '50+'
END,
JWBlack,
JWRed
GROUP BY 1
ORDER BY 1




Or, if you prefer more explicitly self-documenting code:

SELECT
AgeBracket_GROUP =
CASE
WHEN AGE IS NULL OR AGE = 0
THEN 0

WHEN AGE < 18
THEN 1

WHEN AGE <= 24
THEN 2

WHEN AGE <= 25
THEN 3

WHEN AGE <= 30
THEN 4

WHEN AGE <= 44
THEN 5

WHEN AGE <= 49
THEN 6

ELSE 9
END,
AgeBracket_LITERAL =
CASE
WHEN AGE IS NULL OR AGE = 0
THEN 'UNKNOWN AGE'

WHEN AGE < 18
THEN '<18'

WHEN AGE <= 24
THEN '18-24'

WHEN AGE <= 25
THEN '25-30'
.
.
.
ELSE '50+'
END,
JWBlack,
JWRed
GROUP BY CASE
WHEN AGE IS NULL OR AGE = 0
THEN 0

WHEN AGE < 18
THEN 1

WHEN AGE <= 24
THEN 2

WHEN AGE <= 25
THEN 3

WHEN AGE <= 30
THEN 4

WHEN AGE <= 44
THEN 5

WHEN AGE <= 49
THEN 6

ELSE 9
END
ORDER BY CASE
WHEN AGE IS NULL OR AGE = 0
THEN 0

WHEN AGE < 18
THEN 1

WHEN AGE <= 24
THEN 2

WHEN AGE <= 25
THEN 3

WHEN AGE <= 30
THEN 4

WHEN AGE <= 44
THEN 5

WHEN AGE <= 49
THEN 6

ELSE 9
END



-----Original Message-----
From: Chris Beukes
[mailto:mssqldba-ezmlmshield-x99491997.[Email address protected]
Sent: Monday, March 31, 2008 8:30 AM
To: LazyDBA Discussion
Subject: Please help

Hi SQL Guru's





Please help me.



I need to use a single query to get the following results sets:



AgeBracket JWBlack
JWRed

Unknown Age 18
3

<18 2
9

18-24 9
11

25-30 0
45

31-44 49
7

45-49 78
9

50+ 4
9



This specify the count of consumers per age group. JWBlack and JWRed is
group by filters.





Thanks



Chris Beukes

DBA

Global Vision





---------------------------------------------------------------------
TO REPLY TO EVERYBODY , PLEASE CLICK REPLY-ALL, NOT JUST REPLY
To post a dba job: http://jobs.lazydba.com
To subscribe : http://www.LazyDBA.com
To unsubscribe: http://www.lazydba.com/unsubscribe.html


MS Sql Server LazyDBA home page