Looping through a row and retrieving data relative to the value in each column

morinia
morinia used Ask the Experts™
on
I have a long running query because it is reading a very large database.  The issue is there is a string of codes that each have an order number.  There can be as many as 30 on a  line. The order is then matched to another table to get the actual value.  What is the best way to loop through this row to get the codes for all of the 20 values.  This is an SQL statement.
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
lcohanDatabase Analyst

Commented:
The issue is there is a string of codes that each have an order number.

How are they delimited in that string? You could use a string split function and actually SQL has its own from 2016 and up - just have a look here https://docs.microsoft.com/en-us/sql/t-sql/functions/string-split-transact-sql?view=sql-server-2016
Essentially is the same thing if you don't have it depending on the delimiters you could write your own or if you google sql seting split function examples I bet you'll find one. Like this for example https://sqlperformance.com/2012/07/t-sql-queries/split-strings
moriniaAdvanced Analytics Analyst

Author

Commented:
It is not a string.  It is a column than can have multiple values.  Currently I have multiple joins of the same table and check the value.  It will be value1, or value2 or value3........value30.  I then use that value as a key to read another table.  Currently I am using the same two table just giving them different alias.
Most Valuable Expert 2012
Distinguished Expert 2018

Commented:
If you have a single column that you need to look up in two tables, it is a simple join.  I'm guessing that isn't the solution so I'm not understanding your tables.

Please post sample data and expected results.  We don't need all 30 values.  Just 2 or 3 to get the general concept.
Ensure you’re charging the right price for your IT

Do you wonder if your IT business is truly profitable or if you should raise your prices? Learn how to calculate your overhead burden using our free interactive tool and use it to determine the right price for your IT services. Start calculating Now!

moriniaAdvanced Analytics Analyst

Author

Commented:
Attached is a very simple query with four columns.  I am doing this 30 times.  I am hoping to find a more efficient approach.
Sample.txt
Dung DinhDBA and Business Intelligence Developer

Commented:
Do you have the index on this colum?
Most Valuable Expert 2012
Distinguished Expert 2018
Commented:
Can't you join with an IN clause?

select ...
...
ON  FILEA.CLM_KEY=DIAG1.CLM_KEY AND DIAG1.DIAG_CD_ORDR_NBR in ('1','2','3','4')
...

Then you can PIVOT or use CASE statements to get the individual columns.
moriniaAdvanced Analytics Analyst

Author

Commented:
Thanks so much. It wither perfectly.
Most Valuable Expert 2012
Distinguished Expert 2018

Commented:
Glad to help.

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial