cancel
Showing results for 
Search instead for 
Did you mean: 

Subselect in sa_split_list

3,109

When I try:

select line_num, row_value as cc_test FROM sa_split_list( (select top 1 start at 3 substr(cc_txt,12) FROM tblCategory), ';' ) where line_num = 1;

I get syntax error near ','. Why

Accepted Solutions (1)

Accepted Solutions (1)

VolkerBarth
Contributor
0 Kudos

Here's a sample with a (rather useless) subquery on the system table SYSTAB, returning a date value.

-- It "packs" the expected value as column "x" of a derived query (DT)
-- and then calls the stored procedure for that according column, split by a hyphen.
--
-- Note: If you do not apply the "TOP 1" clause, DT will return several rows
-- and the procedure will be called for each result set row separately
-- (in case that may be helpful here)

select line_num, row_value
from (select top 1 last_modified_at as x from systab order by 1) DT
   CROSS APPLY sa_split_list(DT.x, '-')
-- where line_num = 1

Answers (1)

Answers (1)

VolkerBarth
Contributor
0 Kudos

Are you using version 12 or below?

In those versions a procedure does not accept subqueries as argument, such as your "(select top...)".

With v16, that was changed, and your query should work here.

In v12, you could use a derived query to get the top result and then use CROSS APPLY to provide the result as argument to the procedure. The forum does contain such samples, search for APPLY or LATERAL...

0 Kudos

I am using SA12. Can you show me how I use Cross Apply in this case? I have searched but do not understand how to do. I found an openstring solution, but it had its limitations as well.