Best practice or short cut on multiple SQL CASE statements

Accepted Solution Solved
Reply
Frequent Contributor
Posts: 123
Accepted Solution

Best practice or short cut on multiple SQL CASE statements

[ Edited ]

hi,

 

I'm writing a query involving multiple left joins using several months' worth of data for same group of customers.

To help end user understand arbitrary value, I add a CASE statement to include the Value description. 

 

Can someone suggest a way for me to only have to write the case description ONCE, so then each subsequent month/ and case the  value need not be re written? Should this be done via MACRO, and then referring to it using the INCLUDE statement?

 

End result would look like:

Acct       Status_mon01   Desc_mon01     Status_mon02            Desc_mon02   /*and so on */

001                         S            No mail                 S                          No Mail

002                         C            Vacation               N                          Pending        

 

sample code:

proc sql; create table base 

select

t1.*,

t2.Status as Status_mon01,

case  t2.status

when 'A' then 'MAIL'

when 'S' then 'No mail'

/* and so one until end of when-then */

       end as Desc_mon01,

t3.status as status_mon02,

case <...>

from table1 as t1 left join <...> on

t1.id=t2.id

left join

<...>

 

thank you


Accepted Solutions
Solution
‎04-12-2018 07:45 AM
Super User
Posts: 23,771

Re: Best practice or short cut on multiple SQL CASE statements

Store your data in a long format. 

Do the calculation once

Use TRANSPOSE/REPORT to flip your data.

 

Or do it in a data step in an array for the calculations. That's likely the easiest/quickest fix.

View solution in original post


All Replies
Solution
‎04-12-2018 07:45 AM
Super User
Posts: 23,771

Re: Best practice or short cut on multiple SQL CASE statements

Store your data in a long format. 

Do the calculation once

Use TRANSPOSE/REPORT to flip your data.

 

Or do it in a data step in an array for the calculations. That's likely the easiest/quickest fix.

☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 1 reply
  • 92 views
  • 2 likes
  • 2 in conversation