<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Concatenate multiple rows into a single string. in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Concatenate-multiple-rows-into-a-single-string/m-p/324069#M71901</link>
    <description>&lt;P&gt;Hi, I am frustrated after many tries and failing to concatinate multiple text variables into a long text string.&lt;/P&gt;&lt;P&gt;Lets&amp;nbsp;assume that the text segments are PRIMEKEY in the data set PERSON_FILE (var1&amp;nbsp;var2 primekey&amp;nbsp;var4 var5).&lt;/P&gt;&lt;P&gt;lets assume PRIMEKEY values are '123abc'&amp;nbsp; '456fdc'&amp;nbsp; '985liu'......&lt;/P&gt;&lt;P&gt;The&amp;nbsp;desired result is&amp;nbsp;a single string: '123abc','456fdc','985liu','...... :&lt;/P&gt;&lt;P&gt;I've tried 2 approaces which failed me:&lt;/P&gt;&lt;P&gt;approach 1:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;DATA&amp;nbsp;&amp;nbsp; RECKEYS (KEEP=SAMPLKEY);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;SET&amp;nbsp;&amp;nbsp;&amp;nbsp; PERSON_FILE END=EOD;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; IF PRIMEKEY NOT EQ ' ' THEN DO;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF _N_ EQ 1 THEN&amp;nbsp;SAMPLKEY="'"||PRIMEKEY||"'";&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ELSE SAMPLKEY=SAMPLKEY||",'"||PRIMEKEY||"'";&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; END;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; IF _N_ GT &amp;amp;SAMPLE_SIZE OR EOD THEN DO;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OUTPUT;&amp;nbsp;STOP;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; END;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;RUN;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The second approach that I cant make work is:&lt;/P&gt;&lt;P&gt;PROC SORT&amp;nbsp; DATA=PERSON_FILE NODUPKEY; BY PRIMEKEY; RUN;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;PROC SQL;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; SELECT DISTINCT "'"||SAMPLKEY||"'"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTO :RECKEY SEPARATED BY ','&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM KEYS;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;QUIT; RUN;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;TITLE 'RECKEY STRING';&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;PROC PRINT DATA=RECKEYS; RUN &amp;amp;DEBUG;&lt;/P&gt;</description>
    <pubDate>Wed, 11 Jan 2017 21:48:23 GMT</pubDate>
    <dc:creator>YBM</dc:creator>
    <dc:date>2017-01-11T21:48:23Z</dc:date>
    <item>
      <title>Concatenate multiple rows into a single string.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Concatenate-multiple-rows-into-a-single-string/m-p/324069#M71901</link>
      <description>&lt;P&gt;Hi, I am frustrated after many tries and failing to concatinate multiple text variables into a long text string.&lt;/P&gt;&lt;P&gt;Lets&amp;nbsp;assume that the text segments are PRIMEKEY in the data set PERSON_FILE (var1&amp;nbsp;var2 primekey&amp;nbsp;var4 var5).&lt;/P&gt;&lt;P&gt;lets assume PRIMEKEY values are '123abc'&amp;nbsp; '456fdc'&amp;nbsp; '985liu'......&lt;/P&gt;&lt;P&gt;The&amp;nbsp;desired result is&amp;nbsp;a single string: '123abc','456fdc','985liu','...... :&lt;/P&gt;&lt;P&gt;I've tried 2 approaces which failed me:&lt;/P&gt;&lt;P&gt;approach 1:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;DATA&amp;nbsp;&amp;nbsp; RECKEYS (KEEP=SAMPLKEY);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;SET&amp;nbsp;&amp;nbsp;&amp;nbsp; PERSON_FILE END=EOD;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; IF PRIMEKEY NOT EQ ' ' THEN DO;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF _N_ EQ 1 THEN&amp;nbsp;SAMPLKEY="'"||PRIMEKEY||"'";&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ELSE SAMPLKEY=SAMPLKEY||",'"||PRIMEKEY||"'";&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; END;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; IF _N_ GT &amp;amp;SAMPLE_SIZE OR EOD THEN DO;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OUTPUT;&amp;nbsp;STOP;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; END;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;RUN;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The second approach that I cant make work is:&lt;/P&gt;&lt;P&gt;PROC SORT&amp;nbsp; DATA=PERSON_FILE NODUPKEY; BY PRIMEKEY; RUN;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;PROC SQL;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; SELECT DISTINCT "'"||SAMPLKEY||"'"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTO :RECKEY SEPARATED BY ','&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM KEYS;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;QUIT; RUN;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;TITLE 'RECKEY STRING';&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;PROC PRINT DATA=RECKEYS; RUN &amp;amp;DEBUG;&lt;/P&gt;</description>
      <pubDate>Wed, 11 Jan 2017 21:48:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Concatenate-multiple-rows-into-a-single-string/m-p/324069#M71901</guid>
      <dc:creator>YBM</dc:creator>
      <dc:date>2017-01-11T21:48:23Z</dc:date>
    </item>
    <item>
      <title>Re: Concatenate multiple rows into a single string.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Concatenate-multiple-rows-into-a-single-string/m-p/324078#M71905</link>
      <description>&lt;P&gt;I am unclear as to what your data look like and what you are attempting.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Do you have:&lt;/P&gt;
&lt;PRE&gt;var1  var2 primekey var4 var5
1       2      123abc    4      5
2       3      456fdc     5      6
3       4      985liu      6      7

&lt;/PRE&gt;
&lt;P&gt;or something like &lt;/P&gt;
&lt;PRE&gt;var1  var2 primekey1 primekey2 primekey3 var4 var5
1       2      123abc     234asd      345qwe     4      5
2       3      456fdc     345dfg        678yui       5      6
3       4      985liu      678bnm      345dfg       6      7
&lt;/PRE&gt;
&lt;P&gt;or just what?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What do you have now and what should it look like?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 11 Jan 2017 21:57:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Concatenate-multiple-rows-into-a-single-string/m-p/324078#M71905</guid>
      <dc:creator>HB</dc:creator>
      <dc:date>2017-01-11T21:57:26Z</dc:date>
    </item>
    <item>
      <title>Re: Concatenate multiple rows into a single string.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Concatenate-multiple-rows-into-a-single-string/m-p/324092#M71915</link>
      <description>&lt;P&gt;Both approaches are possible!&amp;nbsp; (Both might benefit from using the TRIM function in case your incoming string has trailing blanks that you want to get rid of.)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The first approach fails because the program assigns SAMPLKEY a length based on the first mention.&amp;nbsp; So its length is the length of PRIMEKEY + 2 (enough to hold two single quotes, but not enough to hold the entire string you would want to assemble).&amp;nbsp; So you could possible guess at a long length and issue this statement early in the DATA step:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;length SAMPLKEY $32000;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The correct the code by adding TRIM:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;if _n_=1 then samplkey = "'" || trim(primekey) || "'";&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;else samplkey = trim(samplkey) || ",'" || trim(primekey) || "'";&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The second approach works as is (assuming that KEYS is the proper name for the incoming data set, not PERSON_FILE).&amp;nbsp; The problem is that you don't understand what it creates.&amp;nbsp; There is no output data set here that PROC PRINT can utilize.&amp;nbsp; Instead, there is a macro variable created.&amp;nbsp; You can see its contents by issuing this statement:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;%put &amp;amp;reckey;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It too might benefit by adding the TRIM function.&lt;/P&gt;</description>
      <pubDate>Wed, 11 Jan 2017 22:37:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Concatenate-multiple-rows-into-a-single-string/m-p/324092#M71915</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2017-01-11T22:37:08Z</dc:date>
    </item>
    <item>
      <title>Re: Concatenate multiple rows into a single string.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Concatenate-multiple-rows-into-a-single-string/m-p/324106#M71921</link>
      <description>&lt;P&gt;What are you trying to do with this list?&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The second option has a few other possibilities, but note there's a limit to the length of a string, 64K characters or 32K depending on your system.&lt;/P&gt;
&lt;P&gt;Use the quote function to add quotation marks is a bit cleaner and then it creates a macro variable that you can use in further programs if required.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
select quote(trim(name)) into :name_list  separated by ", "
from sashelp.class;
quit;

%PUT &amp;amp;name_list;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 11 Jan 2017 23:02:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Concatenate-multiple-rows-into-a-single-string/m-p/324106#M71921</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2017-01-11T23:02:13Z</dc:date>
    </item>
    <item>
      <title>Re: Concatenate multiple rows into a single string.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Concatenate-multiple-rows-into-a-single-string/m-p/324112#M71922</link>
      <description>&lt;P&gt;Try something like:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;DATA RECKEYS(KEEP=SAMPLKEY);
length samplkey $2000;
do until(eod or i=&amp;amp;sample_size); 
    SET PERSON_FILE END=EOD;
    if lengthn(primekey) &amp;gt; 0 then do;
       samplkey = catx(",", samplkey, catq("2AS", primekey));
       i + 1;
       end;
    end;
output; stop;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 11 Jan 2017 23:18:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Concatenate-multiple-rows-into-a-single-string/m-p/324112#M71922</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2017-01-11T23:18:50Z</dc:date>
    </item>
    <item>
      <title>Re: Concatenate multiple rows into a single string.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Concatenate-multiple-rows-into-a-single-string/m-p/324248#M71967</link>
      <description>Var1 var2 samplkey var4 ...&lt;BR /&gt;&lt;BR /&gt;25 Jeff 123abc m&lt;BR /&gt;&lt;BR /&gt;32 Hu 456fdc m&lt;BR /&gt;&lt;BR /&gt;45 Waii 985liou f&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;The result strings the sample keys, each in quotes and separated by a comma.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Thu, 12 Jan 2017 14:12:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Concatenate-multiple-rows-into-a-single-string/m-p/324248#M71967</guid>
      <dc:creator>YBM</dc:creator>
      <dc:date>2017-01-12T14:12:21Z</dc:date>
    </item>
    <item>
      <title>Re: Concatenate multiple rows into a single string.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Concatenate-multiple-rows-into-a-single-string/m-p/324293#M71981</link>
      <description>Ah.  I see.  How many records are we talking and how long will this key be?  And what on earth will you do with a giant text string?</description>
      <pubDate>Thu, 12 Jan 2017 16:01:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Concatenate-multiple-rows-into-a-single-string/m-p/324293#M71981</guid>
      <dc:creator>HB</dc:creator>
      <dc:date>2017-01-12T16:01:48Z</dc:date>
    </item>
    <item>
      <title>Re: Concatenate multiple rows into a single string.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Concatenate-multiple-rows-into-a-single-string/m-p/324401#M72018</link>
      <description>I have not tried this solution. YBM.</description>
      <pubDate>Thu, 12 Jan 2017 21:12:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Concatenate-multiple-rows-into-a-single-string/m-p/324401#M72018</guid>
      <dc:creator>YBM</dc:creator>
      <dc:date>2017-01-12T21:12:36Z</dc:date>
    </item>
    <item>
      <title>Re: Concatenate multiple rows into a single string.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Concatenate-multiple-rows-into-a-single-string/m-p/324403#M72019</link>
      <description>the first situation.</description>
      <pubDate>Thu, 12 Jan 2017 21:14:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Concatenate-multiple-rows-into-a-single-string/m-p/324403#M72019</guid>
      <dc:creator>YBM</dc:creator>
      <dc:date>2017-01-12T21:14:12Z</dc:date>
    </item>
    <item>
      <title>Re: Concatenate multiple rows into a single string.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Concatenate-multiple-rows-into-a-single-string/m-p/324404#M72020</link>
      <description>Yours is the one I tried. Since it works, I have not tried the others' suggestions. Thanks.</description>
      <pubDate>Thu, 12 Jan 2017 21:15:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Concatenate-multiple-rows-into-a-single-string/m-p/324404#M72020</guid>
      <dc:creator>YBM</dc:creator>
      <dc:date>2017-01-12T21:15:55Z</dc:date>
    </item>
  </channel>
</rss>

