<?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 Loop in Case Statement in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Loop-in-Case-Statement/m-p/130582#M26645</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I have requirement to convert If statements to CASE in proc sql.&lt;/P&gt;&lt;P&gt;My data looks as below&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;var1&lt;/TD&gt;&lt;TD&gt;var2&lt;/TD&gt;&lt;TD&gt;var3&lt;/TD&gt;&lt;TD&gt;sum_var&lt;/TD&gt;&lt;TD&gt;condition&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;a&lt;/TD&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;c&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;If sum_var &amp;lt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;a&lt;/TD&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;c&lt;/TD&gt;&lt;TD&gt;20&lt;/TD&gt;&lt;TD&gt;If sum_var &amp;gt; 15&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;a&lt;/TD&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;c&lt;/TD&gt;&lt;TD&gt;30&lt;/TD&gt;&lt;TD&gt;If sum_var &amp;gt; 35&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;d&lt;/TD&gt;&lt;TD&gt;e&lt;/TD&gt;&lt;TD&gt;f&lt;/TD&gt;&lt;TD&gt;40&lt;/TD&gt;&lt;TD&gt;If sum_var &amp;gt; 50&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;d&lt;/TD&gt;&lt;TD&gt;e&lt;/TD&gt;&lt;TD&gt;g&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;If sum_var &amp;lt;80&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;Now I need to create output table which satisfies group and cases in proc sql as this code will run in DI studio.&lt;/P&gt;&lt;P&gt;So my var1, var2 and var3 are combinations of variables. This cant be hardcoded. So I would need output something as&amp;nbsp; below&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;var1&lt;/TD&gt;&lt;TD&gt;var2&lt;/TD&gt;&lt;TD&gt;var3&lt;/TD&gt;&lt;TD&gt;sum_var&lt;/TD&gt;&lt;TD&gt;condition&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;a&lt;/TD&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;c&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;If sum_var &amp;lt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;a&lt;/TD&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;c&lt;/TD&gt;&lt;TD&gt;20&lt;/TD&gt;&lt;TD&gt;If sum_var &amp;gt; 15&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;d&lt;/TD&gt;&lt;TD&gt;e&lt;/TD&gt;&lt;TD&gt;g&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;If sum_var &amp;lt;8&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Need your advice.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;P.S.Sent from blackberry.&amp;nbsp; Please ignore Spelling mistakes and typos.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 10 Jul 2013 14:43:30 GMT</pubDate>
    <dc:creator>forumsguy</dc:creator>
    <dc:date>2013-07-10T14:43:30Z</dc:date>
    <item>
      <title>Loop in Case Statement</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Loop-in-Case-Statement/m-p/130582#M26645</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I have requirement to convert If statements to CASE in proc sql.&lt;/P&gt;&lt;P&gt;My data looks as below&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;var1&lt;/TD&gt;&lt;TD&gt;var2&lt;/TD&gt;&lt;TD&gt;var3&lt;/TD&gt;&lt;TD&gt;sum_var&lt;/TD&gt;&lt;TD&gt;condition&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;a&lt;/TD&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;c&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;If sum_var &amp;lt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;a&lt;/TD&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;c&lt;/TD&gt;&lt;TD&gt;20&lt;/TD&gt;&lt;TD&gt;If sum_var &amp;gt; 15&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;a&lt;/TD&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;c&lt;/TD&gt;&lt;TD&gt;30&lt;/TD&gt;&lt;TD&gt;If sum_var &amp;gt; 35&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;d&lt;/TD&gt;&lt;TD&gt;e&lt;/TD&gt;&lt;TD&gt;f&lt;/TD&gt;&lt;TD&gt;40&lt;/TD&gt;&lt;TD&gt;If sum_var &amp;gt; 50&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;d&lt;/TD&gt;&lt;TD&gt;e&lt;/TD&gt;&lt;TD&gt;g&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;If sum_var &amp;lt;80&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;Now I need to create output table which satisfies group and cases in proc sql as this code will run in DI studio.&lt;/P&gt;&lt;P&gt;So my var1, var2 and var3 are combinations of variables. This cant be hardcoded. So I would need output something as&amp;nbsp; below&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;var1&lt;/TD&gt;&lt;TD&gt;var2&lt;/TD&gt;&lt;TD&gt;var3&lt;/TD&gt;&lt;TD&gt;sum_var&lt;/TD&gt;&lt;TD&gt;condition&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;a&lt;/TD&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;c&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;If sum_var &amp;lt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;a&lt;/TD&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;c&lt;/TD&gt;&lt;TD&gt;20&lt;/TD&gt;&lt;TD&gt;If sum_var &amp;gt; 15&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;d&lt;/TD&gt;&lt;TD&gt;e&lt;/TD&gt;&lt;TD&gt;g&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;If sum_var &amp;lt;8&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Need your advice.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;P.S.Sent from blackberry.&amp;nbsp; Please ignore Spelling mistakes and typos.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 10 Jul 2013 14:43:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Loop-in-Case-Statement/m-p/130582#M26645</guid>
      <dc:creator>forumsguy</dc:creator>
      <dc:date>2013-07-10T14:43:30Z</dc:date>
    </item>
    <item>
      <title>Re: Loop in Case Statement</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Loop-in-Case-Statement/m-p/130583#M26646</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You need to clarify your output and the rules you're trying to follow.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The condition is a character variable in the data set?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I don't understand the SQL restriction though, even though its DI studio, if its a code node or User written transformation you can still use data step code can't you?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 10 Jul 2013 14:52:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Loop-in-Case-Statement/m-p/130583#M26646</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2013-07-10T14:52:14Z</dc:date>
    </item>
    <item>
      <title>Re: Loop in Case Statement</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Loop-in-Case-Statement/m-p/130584#M26647</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Completely agree with you Reeza. But since this piece of code is going to be used in extract transformation,&amp;nbsp; my client is adamant on sql code.&lt;/P&gt;&lt;P&gt;Also, you got req correctly. I have combination of these 3 vars. The conditions are present in another variable so we need to output only observations which satisfies conditions present there.&lt;/P&gt;&lt;P&gt;Hope I am making sense&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 10 Jul 2013 15:50:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Loop-in-Case-Statement/m-p/130584#M26647</guid>
      <dc:creator>forumsguy</dc:creator>
      <dc:date>2013-07-10T15:50:35Z</dc:date>
    </item>
    <item>
      <title>Re: Loop in Case Statement</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Loop-in-Case-Statement/m-p/130585#M26648</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Your output doesn't seem to match your data requirements.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can you create a format that would do it, or you have to do straight SQL. I think formats would be better...or macro variable generation for a datastep if code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You need to post all possible conditions though, otherwise this will be a long back and forth.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 10 Jul 2013 16:12:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Loop-in-Case-Statement/m-p/130585#M26648</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2013-07-10T16:12:44Z</dc:date>
    </item>
    <item>
      <title>Re: Loop in Case Statement</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Loop-in-Case-Statement/m-p/130586#M26649</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Assuming condition is always a simple inequality comparison, you could use something like this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;data have;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;length var1 var2 var3 $4 condition $20;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;input var1 var2 var3 sum_var condition &amp;amp;;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;datalines;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;a b c 10 If sum_var &amp;lt;5 &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;a b c 20 If sum_var &amp;gt; 15 &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;a b c 30 If sum_var &amp;gt; 35 &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;d e f 40 If sum_var &amp;gt; 50 &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;d e g 50 If sum_var &amp;lt;80 &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt; &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;proc sql;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;create table want(drop= target keep) as&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;select *, &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; input(scan(condition,3,' &amp;lt;&amp;gt;='), best.) as target,&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; when index(condition,'&amp;lt;=') &amp;gt; 0&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&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; then sum_var &amp;lt;= calculated target&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; when index(condition,'&amp;gt;=') &amp;gt; 0&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&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; then sum_var &amp;gt;= calculated target&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; when index(condition,'&amp;lt;') &amp;gt; 0&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&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; then sum_var &amp;lt; calculated target&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; when index(condition,'&amp;gt;') &amp;gt; 0&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&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; then sum_var &amp;gt; calculated target&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else 0&lt;/STRONG&gt;&lt;BR /&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;BR /&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; as keep&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;from have&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;where calculated keep;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;quit;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PG&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 10 Jul 2013 17:17:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Loop-in-Case-Statement/m-p/130586#M26649</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2013-07-10T17:17:45Z</dc:date>
    </item>
    <item>
      <title>Re: Loop in Case Statement</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Loop-in-Case-Statement/m-p/130587#M26650</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Worked like charm. Although I have several other conditions not only inequality but your logic has helped a lot.. thanks&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;var1&lt;/TD&gt;&lt;TD&gt;var2&lt;/TD&gt;&lt;TD&gt;var3&lt;/TD&gt;&lt;TD&gt;sum_var&lt;/TD&gt;&lt;TD&gt;condition&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;a&lt;/TD&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;c&lt;/TD&gt;&lt;TD&gt;20&lt;/TD&gt;&lt;TD&gt;If sum_var &amp;gt; 15&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;d&lt;/TD&gt;&lt;TD&gt;e&lt;/TD&gt;&lt;TD&gt;g&lt;/TD&gt;&lt;TD&gt;50&lt;/TD&gt;&lt;TD&gt;If sum_var &amp;lt;80&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 10 Jul 2013 17:38:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Loop-in-Case-Statement/m-p/130587#M26650</guid>
      <dc:creator>forumsguy</dc:creator>
      <dc:date>2013-07-10T17:38:03Z</dc:date>
    </item>
  </channel>
</rss>

