Click here to Skip to main content
15,910,211 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Not getting proper Output
i want if Child 26 then level 3

SQL
declare  @level numeric(18)
declare  @Child numeric(18)=26
set @level=(  CASE 
 WHEN @Child < 5 THEN 0
 WHEN @Child  BETWEEN (0 AND 5)      THEN 1
 WHEN @Child BETWEEN (5 AND 25)  THEN 2
 WHEN @Child BETWEEN (25 AND 125)  THEN 3
 WHEN @Child  BETWEEN (125 AND 625)  THEN 4
 WHEN @Child  BETWEEN (625 AND 3125) THEN 5
 WHEN @Child  BETWEEN (3125 AND 15625) THEN 6
 WHEN @Child  BETWEEN (15625 AND 78125) THEN 7
 WHEN @Child BETWEEN (78125 AND 390625)THEN 8
 WHEN @Child  BETWEEN (390625 AND 1953125) THEN 9
 WHEN  @Child BETWEEN (1953125 AND 9765625) THEN 10
 END  )
 
 select @level
 select @Child 
Posted

Please check this....

SQL
declare  @level numeric(18)
declare  @Child numeric(18)=26
set @level=(  
	CASE 
		 WHEN @Child < 0 THEN 0   
		 WHEN @Child  BETWEEN 0 AND 5 THEN 1
		 WHEN @Child BETWEEN 5 AND 25  THEN 2
		 WHEN @Child BETWEEN 25 AND 125  THEN 3
		 WHEN @Child  BETWEEN 125 AND 625  THEN 4
		 WHEN @Child  BETWEEN 625 AND 3125 THEN 5
		 WHEN @Child  BETWEEN 3125 AND 15625 THEN 6
		 WHEN @Child  BETWEEN 15625 AND 78125 THEN 7
		 WHEN @Child BETWEEN 78125 AND 390625THEN 8
		 WHEN @Child  BETWEEN 390625 AND 1953125 THEN 9
		 WHEN  @Child BETWEEN 1953125 AND 9765625 THEN 10
	END ) 

SELECT @level AS Level
SELECT @Child AS Child


1) your are checking @Child <5 THEN 0 and in second case your are checking @Child BETWEEN 0 AND 5 then 1 so your code always go for 0 if child is less then 5 it is not goen for second case for 1 it always return 0 for 0,1,2,3,4,5

2)remove "(" and ")" breakets from BETWEEN
 
Share this answer
 
v2
From your code i got 3 when child 26(as you expected). Just removed first breakete() from your tsql query inside

SQL
declare  @level numeric(18)
declare  @Child numeric(18)=26
set @level=(  CASE 
 WHEN @Child < 5 THEN 0
 WHEN @Child  BETWEEN 0 AND 5      THEN 1
 WHEN @Child BETWEEN 5 AND 25  THEN 2
 WHEN @Child BETWEEN 25 AND 125  THEN 3
 WHEN @Child  BETWEEN 125 AND 625  THEN 4
 WHEN @Child  BETWEEN 625 AND 3125 THEN 5
 WHEN @Child  BETWEEN 3125 AND 15625 THEN 6
 WHEN @Child  BETWEEN 15625 AND 78125 THEN 7
 WHEN @Child BETWEEN 78125 AND 390625 THEN 8
 WHEN @Child  BETWEEN 390625 AND 1953125 THEN 9
 WHEN  @Child BETWEEN 1953125 AND 9765625 THEN 10
 END  );

select @level
select @Child
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900