Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

SQL Help, Pick highest Spend

Kodiak_SeattleJan 12 2010 — edited Jan 14 2010
Oralce 10G.

I have a Table with many unique records, kinda looks like this:

customer_key | BB | CL | LA
123 100 300 50
456 65 125 658
789 12 5 98

I need to take the highest spend.

customer_key | SPEND
123 300
456 658
789 98

Not sure how do this since, the field have different names ?
This post has been answered by Frank Kulash on Jan 12 2010
Jump to Answer

Comments

Frank Kulash
Hi,

Assuming the columns bb, cl and la are never NULL:
SELECT	customer_key
,	GREATEST ( bb
		 , cl
		 , la
		 )	AS spend
FROM	TABLE_X
;
Assuming the numbers can be NULL, is there a lower bound to their possible values (such as 0)?
If so, use NVL to map NULLs to an impossibly low value, e.g. NVL (bb, -1). You may want to use NULLIF to map that back to NULL in the event that all 3 columns are NULL.
If not, unpivot the 3 columns in to one column and use the aggregate MAX function.
Kodiak_Seattle
Cooool, let me try that out, thanks!
Kodiak_Seattle
Ok, this worked, I guess I need one more thing, I need an additional field that will tell me which column the Greatest Spend Came from, like BB, or CL, or LA ?

How would something like that be done ?
Frank Kulash
Answer
Hi,

Use a CASE expression.
Assuming the numbers are distinct and not NULL:
SELECT	customer_key
,	GREATEST ( bb
		 , cl
		 , la
		 )	AS spend
,	CASE
		WHEN  bb >= GREATEST (cl, la)	THEN  'BB'
		WHEN  cl >= la	     	  	THEN  'CL'
		      	    			ELSE  'LA'
	END		AS column_name
FROM	table_x
;
Marked as Answer by Kodiak_Seattle · Sep 27 2020
Kodiak_Seattle
Thank you for your time!
Aketi Jyuuzou
I like simple case expression :D
SELECT customer_key,GREATEST(bb,cl,la) AS spend
CASE GREATEST(bb,cl,la)
when bb then 'BB'
when cl then 'CL'
when la then 'LA' END AS column_name
FROM    table_x;
1 - 6
Locked Post
New comments cannot be posted to this locked post.

Post Details

Locked on Feb 11 2010
Added on Jan 12 2010
6 comments
1,205 views