<?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 Re: concatenate through group by using SAS or PROC SQL, urgent help needed in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/concatenate-through-group-by-using-SAS-or-PROC-SQL-urgent-help/m-p/111713#M30965</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Yes. There is one way. But you need to list all of these unique value as columns , You wouldn't want to that . That is horrible .&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 20 May 2015 13:59:06 GMT</pubDate>
    <dc:creator>Ksharp</dc:creator>
    <dc:date>2015-05-20T13:59:06Z</dc:date>
    <item>
      <title>concatenate through group by using SAS or PROC SQL, urgent help needed</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/concatenate-through-group-by-using-SAS-or-PROC-SQL-urgent-help/m-p/111702#M30954</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi All, I am stuck with a SAS file and not sure how to progress.&lt;/P&gt;&lt;P&gt;The layout is - &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE border="1" class="jiveBorder" style="BORDER-BOTTOM: #000000 1px solid; BORDER-LEFT: #000000 1px solid; WIDTH: 100%; BORDER-TOP: #000000 1px solid; BORDER-RIGHT: #000000 1px solid;"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TH style="text-align: center; background-color: #6690bc; color: #ffffff; padding: 2px;"&gt;&lt;STRONG&gt;Cust No&lt;/STRONG&gt;&lt;/TH&gt;&lt;TH style="text-align: center; background-color: #6690bc; color: #ffffff; padding: 2px;"&gt;&lt;STRONG&gt;Prod&lt;/STRONG&gt;&lt;/TH&gt;&lt;TH style="text-align: center; background-color: #6690bc; color: #ffffff; padding: 2px;"&gt;&lt;STRONG&gt;Acc flag&lt;/STRONG&gt;&lt;/TH&gt;&lt;TH style="text-align: center; background-color: #6690bc; color: #ffffff; padding: 2px;"&gt;&lt;STRONG&gt;Bal&lt;/STRONG&gt;&lt;/TH&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;111&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;a1&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;qaz&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;&lt;P&gt;10&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;111&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;b1&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;wsx&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;11&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;222&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;c1&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;wsx&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;233&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;333&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;d1&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;grw&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;251&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;444&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;e1&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;dc&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;25&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;444&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;f1&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;vefw&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;1231&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;444&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;g1&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;wefr&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;36&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;555&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;h1&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;bdfgh&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;615&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;666&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;i1&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;qe&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;767&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;777&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;j1&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;erg&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;31&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;777&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;k1&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;eth&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;472&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;777&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;l1&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;ret&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;251&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;777&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;m1&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;dfwef&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;3761&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="padding: 2px;"&gt;888&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;p1&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;ffef&lt;/TD&gt;&lt;TD style="padding: 2px;"&gt;36&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I want to introduce two columns in this sas file. One lets say prod_con and other can be Acc_con.&lt;/P&gt;&lt;P&gt;It will look for the cust_no values in this above file. If it finds distinct values then it will simply copy the values of the column Prod and Acc Flag to the new columns prod_con and Acc_con respectively. But whenever it will find duplicates, it should concatenate the values in column Prod and Acc Flag and then copy them into the new columns prod_con and Acc_con respectively.&lt;/P&gt;&lt;P&gt;E.g. for Cust_no = 777, it should put j1k1l1m1 to prod_con and ergethretdfwef to Acc_con and this value will be repeated off course for all 777.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 19 Jul 2012 13:18:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/concatenate-through-group-by-using-SAS-or-PROC-SQL-urgent-help/m-p/111702#M30954</guid>
      <dc:creator>tapas_16880</dc:creator>
      <dc:date>2012-07-19T13:18:48Z</dc:date>
    </item>
    <item>
      <title>Re: concatenate through group by using SAS or PROC SQL, urgent help needed</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/concatenate-through-group-by-using-SAS-or-PROC-SQL-urgent-help/m-p/111703#M30955</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Tapas.&amp;nbsp; I recommend doing two passes if you do know how many duplicates you can encounter.&amp;nbsp; First to create your string and the second pass to add it back to the original records&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;data inds; &lt;BR /&gt;input&amp;nbsp;&amp;nbsp; custno prod $ acc_flag $ bal ; &lt;BR /&gt; datalines; 111 a1 qaz 10 &lt;BR /&gt; 111 b1 wsx 11 &lt;BR /&gt; 222 c1 wsx 233 &lt;BR /&gt; 333 d1 grw 251 &lt;BR /&gt; 444 e1 dc 25 &lt;BR /&gt; 444 f1 vefw 1231 &lt;BR /&gt; 444 g1 wefr 36 &lt;BR /&gt; 555 h1 bdfgh 615 &lt;BR /&gt; 666 i1 qe 767 &lt;BR /&gt; 777 j1 erg 31 &lt;BR /&gt; 777 k1 eth 472 &lt;BR /&gt; 777 l1 ret 251 &lt;BR /&gt; 777 m1 dfwef &lt;BR /&gt; 3761 &lt;BR /&gt; 888 p1 ffef 36 ; &lt;BR /&gt; run; &lt;BR /&gt; proc sort data=inds; by custno prod; run; &lt;BR /&gt; data tmp_ds (keep=custno prod_con acc_con); &lt;BR /&gt; set inds; &lt;BR /&gt; by custno; &lt;BR /&gt; length prod_con acc_con $50.; &lt;BR /&gt; retain prod_con acc_con; &lt;BR /&gt; if first.custno then do;&lt;BR /&gt; prod_con =""; Acc_con = ""; &lt;BR /&gt; end; &lt;BR /&gt; prod_con = trim(prod_con) || trim(prod);&lt;BR /&gt; acc_con = trim(acc_con) || trim(acc_flag);&lt;BR /&gt; if last.custno then output; &lt;BR /&gt; run; &lt;BR /&gt; data final_ds; &lt;BR /&gt; merge inds&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; tmp_ds;&lt;BR /&gt; by custno; &lt;BR /&gt; run; &lt;/CODE&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 19 Jul 2012 13:48:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/concatenate-through-group-by-using-SAS-or-PROC-SQL-urgent-help/m-p/111703#M30955</guid>
      <dc:creator>kevin_123</dc:creator>
      <dc:date>2012-07-19T13:48:07Z</dc:date>
    </item>
    <item>
      <title>Re: concatenate through group by using SAS or PROC SQL, urgent help needed</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/concatenate-through-group-by-using-SAS-or-PROC-SQL-urgent-help/m-p/111704#M30956</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Here's how I would approach this problem&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Sort by CustNo&lt;/LI&gt;&lt;LI&gt;Proc Transpose variable Prod using BY variable CustNo&lt;/LI&gt;&lt;LI&gt;Proc Transpose variable AccFlag using BY variable CustNo&lt;/LI&gt;&lt;LI&gt;merge outputs of above 2 steps BY variable CustNo&lt;/LI&gt;&lt;LI&gt;concatenate as appropriate to produce the two new columns&lt;/LI&gt;&lt;/OL&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 19 Jul 2012 13:48:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/concatenate-through-group-by-using-SAS-or-PROC-SQL-urgent-help/m-p/111704#M30956</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2012-07-19T13:48:45Z</dc:date>
    </item>
    <item>
      <title>Re: concatenate through group by using SAS or PROC SQL, urgent help needed</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/concatenate-through-group-by-using-SAS-or-PROC-SQL-urgent-help/m-p/111705#M30957</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;@kevin_123,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;That's pretty much how I would do it.&amp;nbsp; One simplification you could make is to use the CALL CATS function in place of &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Varname=TRIM(....) || TRIM(...).&lt;/P&gt;&lt;P&gt;So the 2 lines would be :&lt;/P&gt;&lt;P&gt;call cats(prod_con,prod);&lt;/P&gt;&lt;P&gt;call cats(acc_con,acc_flag);&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 19 Jul 2012 14:02:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/concatenate-through-group-by-using-SAS-or-PROC-SQL-urgent-help/m-p/111705#M30957</guid>
      <dc:creator>Keith</dc:creator>
      <dc:date>2012-07-19T14:02:02Z</dc:date>
    </item>
    <item>
      <title>Re: concatenate through group by using SAS or PROC SQL, urgent help needed</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/concatenate-through-group-by-using-SAS-or-PROC-SQL-urgent-help/m-p/111706#M30958</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, From what I can see it is a typical 2XDOW scenario, if the group variable 'custno' is clustered, then no need to sort:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have; &lt;/P&gt;&lt;P&gt;input&amp;nbsp;&amp;nbsp; (custno prod&amp;nbsp; acc_flag) (:$) bal ; &lt;/P&gt;&lt;P&gt; datalines; &lt;/P&gt;&lt;P&gt; 111 a1 qaz 10 &lt;/P&gt;&lt;P&gt; 111 b1 wsx 11 &lt;/P&gt;&lt;P&gt; 222 c1 wsx 233 &lt;/P&gt;&lt;P&gt; 333 d1 grw 251 &lt;/P&gt;&lt;P&gt; 444 e1 dc 25 &lt;/P&gt;&lt;P&gt; 444 f1 vefw 1231 &lt;/P&gt;&lt;P&gt; 444 g1 wefr 36 &lt;/P&gt;&lt;P&gt; 555 h1 bdfgh 615 &lt;/P&gt;&lt;P&gt; 666 i1 qe 767 &lt;/P&gt;&lt;P&gt; 777 j1 erg 31 &lt;/P&gt;&lt;P&gt; 777 k1 eth 472 &lt;/P&gt;&lt;P&gt; 777 l1 ret 251 &lt;/P&gt;&lt;P&gt; 777 m1 dfwef&amp;nbsp; 3761 &lt;/P&gt;&lt;P&gt; 888 p1 ffef 36&lt;/P&gt;&lt;P&gt; ; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; do until (last.custno);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set have;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by custno notsorted;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; length prod_con acc_con $50.;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prod_con=cats(prod_con,prod);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; acc_con=cats(acc_con,acc_flag);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; do until (last.custno);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set have;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by custno notsorted;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc print;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Haikuo&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 19 Jul 2012 14:39:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/concatenate-through-group-by-using-SAS-or-PROC-SQL-urgent-help/m-p/111706#M30958</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2012-07-19T14:39:33Z</dc:date>
    </item>
    <item>
      <title>Re: concatenate through group by using SAS or PROC SQL, urgent help needed</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/concatenate-through-group-by-using-SAS-or-PROC-SQL-urgent-help/m-p/111707#M30959</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am also wondering if there is way to use cats() +group by in proc sql in a summary function kind of way, seems neat to me.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For this question, there is another data step way, originally from Mike Zdeb (I think):&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have; &lt;/P&gt;&lt;P&gt;input&amp;nbsp;&amp;nbsp; (custno prod&amp;nbsp; acc_flag) (:$) bal ; &lt;/P&gt;&lt;P&gt; datalines; &lt;/P&gt;&lt;P&gt; 111 a1 qaz 10 &lt;/P&gt;&lt;P&gt; 111 b1 wsx 11 &lt;/P&gt;&lt;P&gt; 222 c1 wsx 233 &lt;/P&gt;&lt;P&gt; 333 d1 grw 251 &lt;/P&gt;&lt;P&gt; 444 e1 dc 25 &lt;/P&gt;&lt;P&gt; 444 f1 vefw 1231 &lt;/P&gt;&lt;P&gt; 444 g1 wefr 36 &lt;/P&gt;&lt;P&gt; 555 h1 bdfgh 615 &lt;/P&gt;&lt;P&gt; 666 i1 qe 767 &lt;/P&gt;&lt;P&gt; 777 j1 erg 31 &lt;/P&gt;&lt;P&gt; 777 k1 eth 472 &lt;/P&gt;&lt;P&gt; 777 l1 ret 251 &lt;/P&gt;&lt;P&gt; 777 m1 dfwef&amp;nbsp; 3761 &lt;/P&gt;&lt;P&gt; 888 p1 ffef 36&lt;/P&gt;&lt;P&gt; ; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set have (in=up) have;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by custno;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; length prod_con acc_con $50.;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; retain prod_con acc_con;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if first.custno then call missing (prod_con,acc_con);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if up then do;&lt;/P&gt;&lt;P&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; prod_con=cats(prod_con,prod);&lt;/P&gt;&lt;P&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; acc_con=cats(acc_con,acc_flag);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else output;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;proc print;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Haikuo&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 19 Jul 2012 15:06:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/concatenate-through-group-by-using-SAS-or-PROC-SQL-urgent-help/m-p/111707#M30959</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2012-07-19T15:06:18Z</dc:date>
    </item>
    <item>
      <title>Re: concatenate through group by using SAS or PROC SQL, urgent help needed</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/concatenate-through-group-by-using-SAS-or-PROC-SQL-urgent-help/m-p/111708#M30960</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Questions, questions, questions ...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For a single customer, could you ever have two observations with the same Product?&amp;nbsp; With the same Account flag? &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The answers so far might be assuming uniqueness.&amp;nbsp; That might be correct, but the question should at least be asked.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If duplicates are possible, should the same Product appear twice in the new prod_con variable?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The programming won't change drastically ... it's just a matter of tweaking it properly.&lt;/P&gt;&lt;P&gt;Possibly related:&amp;nbsp; Could a product or an account flag ever contain an embedded blank?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 19 Jul 2012 16:23:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/concatenate-through-group-by-using-SAS-or-PROC-SQL-urgent-help/m-p/111708#M30960</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2012-07-19T16:23:57Z</dc:date>
    </item>
    <item>
      <title>Re: concatenate through group by using SAS or PROC SQL, urgent help needed</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/concatenate-through-group-by-using-SAS-or-PROC-SQL-urgent-help/m-p/111709#M30961</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Haikuo Bian, combining your two proposals might be optimal :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;&lt;STRONG&gt;data want;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;&lt;STRONG&gt;do until (last.custno);&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set have (in=up) have;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by custno;&amp;nbsp; /* NOTSORTED cannot be used here */&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; length prod_con acc_con $50.;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if up then do;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prod_con = cats(prod_con, prod);&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; acc_con = cats(acc_con, acc_flag);&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else output;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;&lt;STRONG&gt;run;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PG&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;notsorted removed by PG.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 19 Jul 2012 17:57:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/concatenate-through-group-by-using-SAS-or-PROC-SQL-urgent-help/m-p/111709#M30961</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2012-07-19T17:57:45Z</dc:date>
    </item>
    <item>
      <title>Re: concatenate through group by using SAS or PROC SQL, urgent help needed</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/concatenate-through-group-by-using-SAS-or-PROC-SQL-urgent-help/m-p/111710#M30962</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Yes, PG. That is a good combination, Thanks!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Haikuo&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 19 Jul 2012 21:09:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/concatenate-through-group-by-using-SAS-or-PROC-SQL-urgent-help/m-p/111710#M30962</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2012-07-19T21:09:58Z</dc:date>
    </item>
    <item>
      <title>Re: concatenate through group by using SAS or PROC SQL, urgent help needed</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/concatenate-through-group-by-using-SAS-or-PROC-SQL-urgent-help/m-p/111711#M30963</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;How about this:&lt;/P&gt;&lt;P&gt;Create an index on Cust_no on the file&lt;/P&gt;&lt;P&gt;Then create an extra file of unique customers numbers&lt;/P&gt;&lt;P&gt;Read the file with the unique customers numbers and for each one go to the original file using the KEY option in the SET statement to retrieve and concatenate the Prod and Acc_flag variables. The _iorc_=0 and _error_=0 at the end of the step are to prevent error messages in the log.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;data original(index=(Cust_no));&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;input Cust_no Prod $ ACC_flag $ Bal $ ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;datalines;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;111&amp;nbsp;&amp;nbsp;&amp;nbsp; a1&amp;nbsp;&amp;nbsp;&amp;nbsp; qaz&amp;nbsp;&amp;nbsp;&amp;nbsp; 10&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;111&amp;nbsp;&amp;nbsp;&amp;nbsp; b1&amp;nbsp;&amp;nbsp;&amp;nbsp; wsx&amp;nbsp;&amp;nbsp;&amp;nbsp; 11&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;222&amp;nbsp;&amp;nbsp;&amp;nbsp; c1&amp;nbsp;&amp;nbsp;&amp;nbsp; wsx&amp;nbsp;&amp;nbsp;&amp;nbsp; 233&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;333&amp;nbsp;&amp;nbsp;&amp;nbsp; d1&amp;nbsp;&amp;nbsp;&amp;nbsp; grw&amp;nbsp;&amp;nbsp;&amp;nbsp; 251&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;444&amp;nbsp;&amp;nbsp;&amp;nbsp; e1&amp;nbsp;&amp;nbsp;&amp;nbsp; dc&amp;nbsp;&amp;nbsp;&amp;nbsp; 25&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;444&amp;nbsp;&amp;nbsp;&amp;nbsp; f1&amp;nbsp;&amp;nbsp;&amp;nbsp; vefw&amp;nbsp;&amp;nbsp;&amp;nbsp; 1231&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;444&amp;nbsp;&amp;nbsp;&amp;nbsp; g1&amp;nbsp;&amp;nbsp;&amp;nbsp; wefr&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;555&amp;nbsp;&amp;nbsp;&amp;nbsp; h1&amp;nbsp;&amp;nbsp;&amp;nbsp; bdfgh&amp;nbsp;&amp;nbsp;&amp;nbsp; 615&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;666&amp;nbsp;&amp;nbsp;&amp;nbsp; i1&amp;nbsp;&amp;nbsp;&amp;nbsp; qe&amp;nbsp;&amp;nbsp;&amp;nbsp; 767&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;777&amp;nbsp;&amp;nbsp;&amp;nbsp; j1&amp;nbsp;&amp;nbsp;&amp;nbsp; erg&amp;nbsp;&amp;nbsp;&amp;nbsp; 31&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;777&amp;nbsp;&amp;nbsp;&amp;nbsp; k1&amp;nbsp;&amp;nbsp;&amp;nbsp; eth&amp;nbsp;&amp;nbsp;&amp;nbsp; 472&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;777&amp;nbsp;&amp;nbsp;&amp;nbsp; l1&amp;nbsp;&amp;nbsp;&amp;nbsp; ret&amp;nbsp;&amp;nbsp;&amp;nbsp; 251&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;777&amp;nbsp;&amp;nbsp;&amp;nbsp; m1&amp;nbsp;&amp;nbsp;&amp;nbsp; dfwef&amp;nbsp;&amp;nbsp;&amp;nbsp; 3761&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;888&amp;nbsp;&amp;nbsp;&amp;nbsp; p1&amp;nbsp;&amp;nbsp;&amp;nbsp; ffef&amp;nbsp;&amp;nbsp;&amp;nbsp; 36&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;run;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;proc sort data=original(keep=cust_no) out=customers nodupkey;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;by Cust_no;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;run;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;data new;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;set customers;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;length Prod_con Acc_con $50;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;do until (_iorc_ ne 0);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp; set original key = Cust_no;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp; if _iorc_ = 0 then do;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Prod_con = CATX('|',Prod_Con,Prod);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Acc_con = CATX('|',Acc_con,Acc_flag);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp; end;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;end;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;output;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;_iorc_ = 0; _error_=0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;run;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;proc print;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;run;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 20 Jul 2012 05:05:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/concatenate-through-group-by-using-SAS-or-PROC-SQL-urgent-help/m-p/111711#M30963</guid>
      <dc:creator>ErikT</dc:creator>
      <dc:date>2012-07-20T05:05:35Z</dc:date>
    </item>
    <item>
      <title>Re: concatenate through group by using SAS or PROC SQL, urgent help needed</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/concatenate-through-group-by-using-SAS-or-PROC-SQL-urgent-help/m-p/111712#M30964</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Is there any way to do this in proc sql?&lt;/P&gt;&lt;P&gt;I need to calcualte 40+ column for sum and mean. SQL is easier to calculate sum and mean, but how can I concatenate row values across each ID: E.g. for Cust_no = 777, it should put j1k1l1m1 to prod_con and get the total balance for each SSN in proc sql&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 19 May 2015 23:07:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/concatenate-through-group-by-using-SAS-or-PROC-SQL-urgent-help/m-p/111712#M30964</guid>
      <dc:creator>flyerrhappy2015</dc:creator>
      <dc:date>2015-05-19T23:07:27Z</dc:date>
    </item>
    <item>
      <title>Re: concatenate through group by using SAS or PROC SQL, urgent help needed</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/concatenate-through-group-by-using-SAS-or-PROC-SQL-urgent-help/m-p/111713#M30965</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Yes. There is one way. But you need to list all of these unique value as columns , You wouldn't want to that . That is horrible .&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 20 May 2015 13:59:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/concatenate-through-group-by-using-SAS-or-PROC-SQL-urgent-help/m-p/111713#M30965</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2015-05-20T13:59:06Z</dc:date>
    </item>
  </channel>
</rss>

