Q
Problem solve Get help with specific problems with your technologies, process and projects.

# A data-driven solution to changing expression when criteria change

I have the following SQL expression:

```(CASE WHEN XYZ >469 AND XYZ BETWEEN 580 AND 599 THEN 4 ELSE
(CASE WHEN XYZ >454 AND XYZ BETWEEN 600 AND 614 THEN 4 ELSE
(CASE WHEN XYZ >429 AND XYZ BETWEEN 615 AND 639 THEN 4 ELSE
(CASE WHEN XYZ BETWEEN 400 AND 499 AND XYZ BETWEEN 640 AND 669 THEN 4 ELSE
(CASE WHEN XYZ BETWEEN 400 AND 469 AND XYZ BETWEEN 670 AND 694 THEN 4 ELSE
(CASE WHEN XYZ BETWEEN 370 AND 469 AND XYZ BETWEEN 695 AND 714 THEN 4 ELSE
(CASE WHEN XYZ BETWEEN 370 AND 439 AND XYZ >714 THEN 4 ELSE
(CASE WHEN XYZ >499 AND XYZ BETWEEN 640 AND 684 THEN 3 ELSE
(CASE WHEN XYZ BETWEEN 470 AND 499 AND XYZ BETWEEN 670 AND 714 THEN 3 ELSE
(CASE WHEN XYZ >499 AND XYZ BETWEEN 685 AND 749 THEN 2 ELSE
(CASE WHEN XYZ BETWEEN 440 AND 499 AND XYZ >714 THEN 2 ELSE
(CASE WHEN XYZ >499 AND XYZ >749 THEN 1 ELSE NULL END)
END) END) END) END) END) END) END) END) END) END)
END)
```
Does anyone have a data-driven solution so that if criteria changes, my one change can traverse through all the places where this expression is used?

First, I'd suggest that you review your CASE statement as it appears to have some logic in it that would not work properly. For example, several of the cases have checks like this one: CASE WHEN XYZ BETWEEN 400 AND 499 AND XYZ BETWEEN 640 AND 669 THEN... That case will NEVER get met because a single number can not be in both ranges. Perhaps you meant to use an OR operator rather than an AND. Anyway, just check your statement for validity to make sure!

Now, to make a "data-driven" solution, I'd suggest that you drop the CASE statement entirely and write a function that contains all your case (if-then-else) logic. The function would take XYZ as an IN parameter and RETURN a number which is the value (1, 2, 3, 4 or null) that you want to use depending on the value of XYZ. Then, instead of a case statement, you'd call the function you wrote as follows: SELECT get_xyz_val(xyz) FROM table; The function returns the value you want and you don't have all that "messy" case logic in your select statement. Also, when you want to change criteria, you simply change and recompile the function....easy!

Here's a sample function (note that I just use your exact checks from your CASE statement...I still think you need to take a look at these for validity):

```CREATE OR REPLACE FUNCTION get_xyz_value (p_xyz IN number)
RETURN number
AS
v_return number := 0 ;
BEGIN
IF p_xyz > 469 AND
p_xyz BETWEEN 580 AND 599 THEN
v_return := 4;
ELSIF p_xyz > 454 AND
p_xyz BETWEEN 600 AND 614 THEN
v_return := 4;
ELSIF p_xyz > 429 AND p_xyz BETWEEN 615 AND 639 THEN
v_return := 4;
ELSIF p_xyz BETWEEN 400 AND 499 AND
p_xyz BETWEEN 640 AND 669 THEN
v_return := 4 ;
ELSIF p_xyz BETWEEN 400 AND 469 AND
p_xyz BETWEEN 670 AND 694 THEN
v_return := 4 ;
ELSIF p_XYZ BETWEEN 370 AND 469 AND
p_XYZ BETWEEN 695 AND 714 THEN
v_return := 4 ;
ELSIF p_XYZ BETWEEN 370 AND 439 AND
p_XYZ >714 THEN
v_return := 4 ;
ELSIF p_XYZ > 499 AND
p_XYZ BETWEEN 640 AND 684 THEN
v_return := 3 ;
ELSIF p_XYZ BETWEEN 470 AND 499 AND
p_XYZ BETWEEN 670 AND 714 THEN
v_return := 3 ;
ELSIF p_XYZ > 499 AND
p_XYZ BETWEEN 685 AND 749 THEN
v_return := 2 ;
ELSIF p_XYZ BETWEEN 440 AND 499 AND
p_XYZ > 714 THEN
v_return := 2 ;
ELSIF p_XYZ > 499 AND
p_XYZ > 749 THEN
v_return := 1 ;
ELSE
v_return := null ;
END IF;

RETURN v_return ;
END;
/
```
Then to use, just run your select statement as follows:
```SELECT xyz, get_xyz_value(xyz) as xyz_value
FROM your_table ;
```
Here's an example of the results (using some dummy data I created):
```SQL> select xyz, get_xyz_value(xyz) as xyz_value from testxyz ;

XYZ  XYZ_VALUE
---------- ----------
799          1
699          2
599          4
475
499
642          3
```
I hope that helps!

#### Have a question for an expert?

Get answers from a TechTarget expert on whatever's puzzling you.

You will be able to add details on the next page.

#### Start the conversation

Send me notifications when other members comment.

## SearchDataManagement

• ### Hitachi Vantara acquires data catalog vendor Waterline Data

With the acquisition of Waterline Data, Hitachi Vantara is bringing new data catalog capabilities that will expand the Lumada ...

• ### New Confluent Platform release boosts event streaming quality

Based on the open-source Kafka event streaming platform, the Confluent Platform 5.4 update adds new capabilities to help meet ...

• ### Where InfluxDB time series database is going

Users need more than SQL for querying databases, according to Paul Dix, co-founder and CTO of InfluxData. That's why the vendor ...

• ### How to compare and choose augmented analytics tools

Choosing an augmented BI and analytics vendor can be difficult when their offerings are so similar. Analysts at Gartner and ...

• ### ThoughtSpot IPO could be coming after vendor adds first CFO

Hiring of a CFO for the first time signals that ThoughtSpot may be positioning itself for an IPO and comes six months after what ...

• ### 5 ways enterprises adapt to the data scientist shortage

Where are all the data scientists? Coping with the data scientist shortage is a struggle for many enterprises. Here are five ways...

## SearchSAP

• ### SAP S/4HANA migration should be business-driven

In this Q&A, Ekrem Hatip of Syntax Systems discusses what SAP customers need to consider as they embark on an SAP S/4HANA ...

• ### SAP S/4HANA migration: Critical advice for moving off ECC

With the end of SAP ECC support looming in 2025, organizations must make some tough decisions. Here's a look at your choices.

• ### New SAP leadership faces big challenges in 2020

Industry analysts discuss SAP's biggest issues in 2020, including how the two new CEOs will guide the company deeper into the ...

## SearchSQLServer

• ### SQL Server database design best practices and tips for DBAs

Good database design is a must to meet processing needs in SQL Server systems. In a webinar, consultant Koen Verbeeck offered ...

• ### SQL Server in Azure database choices and what they offer users

SQL Server databases can be moved to the Azure cloud in several different ways. Here's what you'll get from each of the options ...

• ### Using a LEFT OUTER JOIN vs. RIGHT OUTER JOIN in SQL

In this book excerpt, you'll learn LEFT OUTER JOIN vs. RIGHT OUTER JOIN techniques and find various examples for creating SQL ...

## TheServerSide.com

• ### Don't ever put a non-Java LTS release into production

Development teams should avoid non-long-term support releases at all costs. Pay attention to the Java release cycle to make sure ...

• ### Public API strategy considerations for enterprise adoption

As organizations look for more cost-effective ways to manage data, an evolving landscape with APIs has made the technology more ...

• ### Ideas on how to hold a successful code hackathon

Want to host a hackathon? Here are some ideas on what a company can do to host an event that solves problems and reenergizes the ...

## SearchDataCenter

• ### Top data center skills admins can use in 2020

The 2019 tech job sector saw consistent growth and job availability. In 2020, admins should develop expertise on cloud ...

• ### Organizations try to predict the effect of 5G infrastructure

With more 5G and IoT devices emerging, admins must prepare their data centers to support low-latency apps and edge computing with...

• ### Top infrastructure and operations technology myths of 2019

Admins are consistently evaluating technology to improve I&O efficiency. Cost, integration and business goals are key components ...

## SearchContentManagement

• ### 4 popular content collaboration platforms to consider

Companies need to be organized if they want to be efficient. Content collaboration platforms are useful, but first, ensure that ...

• ### AI can enhance content security with a bit of planning

Microsoft and Box both use AI technologies to keep content secure in the cloud. But before using such tools, businesses first ...

• ### Ex-SAP exec steers Episerver CMS toward digital experience market

Alex Atzberger discusses leaving the helm of SAP's CX platform to become Episerver CEO. Now, Episerver looks to reinvent itself ...

## SearchHRSoftware

• ### 6 candidate journey mapping secrets savvy recruiters know

A journey map can be a critical tool for uncovering what it takes to provide your candidates with great experiences. Here's ...

• ### Critical tips for managing contingent workers

Contingent workers save companies both time and money, so it's important to manage them in a win-win way. Here is what HR teams ...

• ### Impact of AI on jobs goes on the presidential campaign trail

The impact of AI on jobs is a major issue for employers, who are struggling with how to address it. Robots, automation and AI ...

Close