<?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: How to COUNT distinct value of two colums in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-to-COUNT-distinct-value-of-two-colums/m-p/496446#M131306</link>
    <description>&lt;P&gt;If you want to keep all the original rows.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql ;
    select r.*                
         ,count(distinct p1.PRODUCT) as PRODUCT_OVERLAP
         ,count(distinct s1.STORE )  as STORE_OVERLAP
    from HAVE1 a 
    left  join (select unique COUNTRY ,PRODUCT from HAVE2) p1 on a.COUNTRY1 = p1.COUNTRY
    inner join (select unique COUNTRY ,PRODUCT from HAVE2) p2 on a.COUNTRY2 = p2.COUNTRY &amp;amp; p1.PRODUCT=p2.PRODUCT
    left  join (select unique COUNTRY ,STORE   from HAVE2) s1 on a.COUNTRY1 = s1.COUNTRY 
    inner join (select unique COUNTRY ,STORE   from HAVE2) s2 on a.COUNTRY2 = s2.COUNTRY &amp;amp; s1.STORE=s2.STORE
    right join HAVE1 r on a.COUNTRY1=r.COUNTRY1 &amp;amp; a.YEAR=r.YEAR &amp;amp; a.COUNTRY2=r.COUNTRY2 
    group by r.COUNTRY1, r.YEAR, r.COUNTRY2;
quit;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;DIV class="branch"&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure SQL: Query Results" frame="box" rules="all" cellspacing="0" cellpadding="5"&gt;&lt;COLGROUP&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt;&lt;/COLGROUP&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="r b header" scope="col"&gt;COUNTRY1&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;YEAR&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;COUNTRY2&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;PRODUCT_OVERLAP&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;STORE_OVERLAP&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2000&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2000&lt;/TD&gt;
&lt;TD class="r data"&gt;101&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2001&lt;/TD&gt;
&lt;TD class="r data"&gt;103&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;2000&lt;/TD&gt;
&lt;TD class="r data"&gt;201&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;2000&lt;/TD&gt;
&lt;TD class="r data"&gt;202&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;2001&lt;/TD&gt;
&lt;TD class="r data"&gt;203&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;2000&lt;/TD&gt;
&lt;TD class="r data"&gt;301&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;2000&lt;/TD&gt;
&lt;TD class="r data"&gt;302&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;2001&lt;/TD&gt;
&lt;TD class="r data"&gt;203&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;2001&lt;/TD&gt;
&lt;TD class="r data"&gt;303&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 18 Sep 2018 02:43:08 GMT</pubDate>
    <dc:creator>ChrisNZ</dc:creator>
    <dc:date>2018-09-18T02:43:08Z</dc:date>
    <item>
      <title>How to COUNT distinct value of two colums</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-COUNT-distinct-value-of-two-colums/m-p/496406#M131284</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am exploring how to use DISTINCT in SQL SUM(a=b)&lt;/P&gt;&lt;P&gt;Here is what I have&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have1 ;
input
COUNTRY1 YEAR COUNTRY2 $5.;
datalines;
001  2000  101
001  2000  002
001  2001  103
002  2000  201
002  2000  202
002  2001  203
003  2001  203
003  2000  301
003  2000  302
003  2001  303
;
run;

data have2 ;
input
COUNTRY PRODUCT STORE PRICE $5.;
datalines;
001  A1  B1  2
001  A2  B2  2
001  A3  B3  3
002  A3  B1  4
002  A4  B2  1
002  A5  B2  2
003  A5  B3  1
003  A6  B1  2
003  A7  B2  3
003  A8  B2  1
101  A1  B3  2
103  A3  B1  3
201  A3  B2  2
202  A4  B3  1
203  A5  B2  2
203  A8  B3  1
301  A6  B1  1
302  A4  B2  3
303  A6  B3  2
;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Thanks to your help. I have figured out the code.&lt;/P&gt;&lt;P&gt;Here is what I am using&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql ;
  create table want as 
    select a.*,
		sum(b.product=c.product) as product_overlap,
		SUM(b.STORE = c.STORE) as store_overlap,&lt;BR /&gt;                SUM(b.PRICE = c.PRICE) as price_overlap
    from have1 a 
    left join have2 b on a.COUNTRY1=b.COUNTRY
    left join have2 c on a.COUNTRY2=c.COUNTRY
    group by COUNTRY1, YEAR, COUNTRY2;
quit;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;But since there could be duplicate STORE, PRICE, PRODUCT. How can I only use the distinct values in those variables?&lt;/P&gt;&lt;P&gt;For example, when I want to compute PRODUCT_OVERLAP, I only select the DISTINCT PRODUCT of country1 and country2 and count their overlap.&lt;/P&gt;&lt;P&gt;when I want to compute STORE_OVERLAP, I only select the DISTINCT STORE of country1 and country2 and count their overlap.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I tried to&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;SUM(DISTINCT b.STORE = c.STORE) as store_overlap&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;But I think it is not right.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you allso.&lt;/P&gt;</description>
      <pubDate>Mon, 17 Sep 2018 21:38:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-COUNT-distinct-value-of-two-colums/m-p/496406#M131284</guid>
      <dc:creator>yanshuai</dc:creator>
      <dc:date>2018-09-17T21:38:28Z</dc:date>
    </item>
    <item>
      <title>Re: How to COUNT distinct value of two colums</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-COUNT-distinct-value-of-two-colums/m-p/496424#M131295</link>
      <description>&lt;P&gt;It helps to also show the expected output from you example data with your rules.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I am not quite sure why you have year in one set but not the other. One seldom expects prices to stay the same across time.&lt;/P&gt;</description>
      <pubDate>Mon, 17 Sep 2018 23:24:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-COUNT-distinct-value-of-two-colums/m-p/496424#M131295</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2018-09-17T23:24:22Z</dc:date>
    </item>
    <item>
      <title>Re: How to COUNT distinct value of two colums</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-COUNT-distinct-value-of-two-colums/m-p/496444#M131304</link>
      <description>&lt;P&gt;Like this?&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql ;
    select a.*                
         ,count(distinct p1.PRODUCT) as PRODUCT_OVERLAP
         ,count(distinct s1.STORE )  as STORE_OVERLAP
    from HAVE1 a 
    left  join (select unique COUNTRY ,PRODUCT from HAVE2) p1 on a.COUNTRY1 = p1.COUNTRY
    inner join (select unique COUNTRY ,PRODUCT from HAVE2) p2 on a.COUNTRY2 = p2.COUNTRY &amp;amp; p1.PRODUCT=p2.PRODUCT
    left  join (select unique COUNTRY ,STORE   from HAVE2) s1 on a.COUNTRY1 = s1.COUNTRY 
    inner join (select unique COUNTRY ,STORE   from HAVE2) s2 on a.COUNTRY2 = s2.COUNTRY &amp;amp; s1.STORE=s2.STORE
   group by COUNTRY1, YEAR, COUNTRY2;
quit;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;DIV class="branch"&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure SQL: Query Results" frame="box" rules="all" cellspacing="0" cellpadding="5"&gt;&lt;COLGROUP&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt;&lt;/COLGROUP&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="r b header" scope="col"&gt;COUNTRY1&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;YEAR&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;COUNTRY2&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;PRODUCT_OVERLAP&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;STORE_OVERLAP&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2000&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2000&lt;/TD&gt;
&lt;TD class="r data"&gt;101&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2001&lt;/TD&gt;
&lt;TD class="r data"&gt;103&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;2000&lt;/TD&gt;
&lt;TD class="r data"&gt;201&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;2001&lt;/TD&gt;
&lt;TD class="r data"&gt;203&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;2000&lt;/TD&gt;
&lt;TD class="r data"&gt;301&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;2001&lt;/TD&gt;
&lt;TD class="r data"&gt;203&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;2001&lt;/TD&gt;
&lt;TD class="r data"&gt;303&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 18 Sep 2018 02:37:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-COUNT-distinct-value-of-two-colums/m-p/496444#M131304</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2018-09-18T02:37:16Z</dc:date>
    </item>
    <item>
      <title>Re: How to COUNT distinct value of two colums</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-COUNT-distinct-value-of-two-colums/m-p/496446#M131306</link>
      <description>&lt;P&gt;If you want to keep all the original rows.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql ;
    select r.*                
         ,count(distinct p1.PRODUCT) as PRODUCT_OVERLAP
         ,count(distinct s1.STORE )  as STORE_OVERLAP
    from HAVE1 a 
    left  join (select unique COUNTRY ,PRODUCT from HAVE2) p1 on a.COUNTRY1 = p1.COUNTRY
    inner join (select unique COUNTRY ,PRODUCT from HAVE2) p2 on a.COUNTRY2 = p2.COUNTRY &amp;amp; p1.PRODUCT=p2.PRODUCT
    left  join (select unique COUNTRY ,STORE   from HAVE2) s1 on a.COUNTRY1 = s1.COUNTRY 
    inner join (select unique COUNTRY ,STORE   from HAVE2) s2 on a.COUNTRY2 = s2.COUNTRY &amp;amp; s1.STORE=s2.STORE
    right join HAVE1 r on a.COUNTRY1=r.COUNTRY1 &amp;amp; a.YEAR=r.YEAR &amp;amp; a.COUNTRY2=r.COUNTRY2 
    group by r.COUNTRY1, r.YEAR, r.COUNTRY2;
quit;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;DIV class="branch"&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure SQL: Query Results" frame="box" rules="all" cellspacing="0" cellpadding="5"&gt;&lt;COLGROUP&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt;&lt;/COLGROUP&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="r b header" scope="col"&gt;COUNTRY1&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;YEAR&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;COUNTRY2&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;PRODUCT_OVERLAP&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;STORE_OVERLAP&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2000&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2000&lt;/TD&gt;
&lt;TD class="r data"&gt;101&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2001&lt;/TD&gt;
&lt;TD class="r data"&gt;103&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;2000&lt;/TD&gt;
&lt;TD class="r data"&gt;201&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;2000&lt;/TD&gt;
&lt;TD class="r data"&gt;202&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;2001&lt;/TD&gt;
&lt;TD class="r data"&gt;203&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;2000&lt;/TD&gt;
&lt;TD class="r data"&gt;301&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;2000&lt;/TD&gt;
&lt;TD class="r data"&gt;302&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;2001&lt;/TD&gt;
&lt;TD class="r data"&gt;203&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;2001&lt;/TD&gt;
&lt;TD class="r data"&gt;303&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 18 Sep 2018 02:43:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-COUNT-distinct-value-of-two-colums/m-p/496446#M131306</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2018-09-18T02:43:08Z</dc:date>
    </item>
    <item>
      <title>Re: How to COUNT distinct value of two colums</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-COUNT-distinct-value-of-two-colums/m-p/496447#M131307</link>
      <description>&lt;P&gt;Mmm this wasn't quite right either.&lt;/P&gt;
&lt;P&gt;I this this nails it:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
proc sql ;
    select a.*        
          ,count(distinct p.PRODUCT) as PRODUCT_OVERLAP
          ,count(distinct s.STORE )  as STORE_OVERLAP
    from HAVE1 a 

         left join (select a.*, p1.PRODUCT from HAVE1 a 
                    left  join (select unique COUNTRY ,PRODUCT from HAVE2) p1 on a.COUNTRY1 = p1.COUNTRY
                    inner join (select unique COUNTRY ,PRODUCT from HAVE2) p2 on a.COUNTRY2 = p2.COUNTRY &amp;amp; p1.PRODUCT=p2.PRODUCT) p
         on a.COUNTRY1=p.COUNTRY1 &amp;amp; a.YEAR=p.YEAR &amp;amp; a.COUNTRY2=p.COUNTRY2 

         left join (select a.*, s1.STORE from HAVE1 a 
                    left  join (select unique COUNTRY ,STORE from HAVE2) s1 on a.COUNTRY1 = s1.COUNTRY
                    inner join (select unique COUNTRY ,STORE from HAVE2) s2 on a.COUNTRY2 = s2.COUNTRY &amp;amp; s1.STORE=s2.STORE) s
         on a.COUNTRY1=s.COUNTRY1 &amp;amp; a.YEAR=s.YEAR &amp;amp; a.COUNTRY2=s.COUNTRY2 

    group by a.COUNTRY1, a.YEAR, a.COUNTRY2;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class="branch"&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure SQL: Query Results" frame="box" rules="all" cellspacing="0" cellpadding="5"&gt;&lt;COLGROUP&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt;&lt;/COLGROUP&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="r b header" scope="col"&gt;COUNTRY1&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;YEAR&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;COUNTRY2&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;PRODUCT_OVERLAP&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;STORE_OVERLAP&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2000&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2000&lt;/TD&gt;
&lt;TD class="r data"&gt;101&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2001&lt;/TD&gt;
&lt;TD class="r data"&gt;103&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;2000&lt;/TD&gt;
&lt;TD class="r data"&gt;201&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;2000&lt;/TD&gt;
&lt;TD class="r data"&gt;202&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;2001&lt;/TD&gt;
&lt;TD class="r data"&gt;203&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;2000&lt;/TD&gt;
&lt;TD class="r data"&gt;301&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;2000&lt;/TD&gt;
&lt;TD class="r data"&gt;302&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;2001&lt;/TD&gt;
&lt;TD class="r data"&gt;203&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;2001&lt;/TD&gt;
&lt;TD class="r data"&gt;303&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 18 Sep 2018 03:14:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-COUNT-distinct-value-of-two-colums/m-p/496447#M131307</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2018-09-18T03:14:52Z</dc:date>
    </item>
    <item>
      <title>Re: How to COUNT distinct value of two colums</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-COUNT-distinct-value-of-two-colums/m-p/497552#M131897</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you very much. I think this works very well.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;But I also have two issues with it.&lt;/P&gt;&lt;P&gt;1. It gives me a lot of duplicate rows. I am not sure where is going on.&lt;/P&gt;&lt;P&gt;2. Instead of the number of overlap, what if I would like to calculate the ratio of overlap.&lt;/P&gt;&lt;P&gt;i.e. OVERLAP of STORE for COUNTRY1, OVERLAP of STORE for COUNTRY2, and OVERLAP of STORE for both COUNTRY1 AND COUNTRY2&lt;/P&gt;&lt;P&gt;The numerator is still the OVERLAP, but denomenator will be UNIQUE STORE of COUNTRY1, UNIQUE STORE of COUNTRY2, UNIQUE STORE among COUNTRY1 AND COUNTRY2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you very much.&lt;/P&gt;</description>
      <pubDate>Thu, 20 Sep 2018 20:47:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-COUNT-distinct-value-of-two-colums/m-p/497552#M131897</guid>
      <dc:creator>yanshuai</dc:creator>
      <dc:date>2018-09-20T20:47:09Z</dc:date>
    </item>
    <item>
      <title>Re: How to COUNT distinct value of two colums</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-COUNT-distinct-value-of-two-colums/m-p/497623#M131950</link>
      <description>&lt;P&gt;1. Duplicates&amp;nbsp;mean that the data is not as described.&lt;/P&gt;
&lt;P&gt;Maybe adding the keyword &lt;FONT face="courier new,courier"&gt;unique&lt;/FONT&gt; solves this issue (hopefully&amp;nbsp;in the subqueries rather than the main query, to reduce volume)?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;2. Provide an example please.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 20 Sep 2018 23:45:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-COUNT-distinct-value-of-two-colums/m-p/497623#M131950</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2018-09-20T23:45:09Z</dc:date>
    </item>
    <item>
      <title>Re: How to COUNT distinct value of two colums</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-COUNT-distinct-value-of-two-colums/m-p/499740#M133019</link>
      <description>&lt;P&gt;Thank you. Sorry I recently have a cold and did not check replies.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So the basic thought is&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql ;
    select a.*        
          ,count(distinct p.PRODUCT) as PRODUCT_OVERLAP
          ,count(distinct s.STORE )  as STORE_OVERLAP
          ,count(distinct p.PRODUCT) / count(distinct COUNTRY1'S PRODUCT) as OVERLAP_COUNTRY1
          ,count(distinct p.PRODUCT) / count(distinct COUNTRY2'S PRODUCT) as OVERLAP_COUNTRY2
          ,count(distinct p.PRODUCT) / count(distinct COUNTRY1'S and COUNTRY2'S PRODUCT) as OVERLAP_ALL&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Since I am trying to get overlap between them. Suppose now we already have the number of overlap. Now I would like to compute the ratio of overlap compared with COUNTRY1, COUNTRY2, COUNTRY1 and 2.&lt;/P&gt;&lt;P&gt;Using one example here:&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;count(distinct p.PRODUCT) / count(distinct COUNTRY1'S PRODUCT) as OVERLAP_COUNTRY1&lt;BR /&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;For COUNTRY 001, its PRODUCT OVERLAP with COUNTRY 101 is 1. (Only A1 is overlap)&lt;/P&gt;&lt;P&gt;Its PRODUCT OVERLAP WITH COUNTRY 101 divided by itself unique PRODUCT = 1/3. (A1 / (A1 + A2 +A3))&lt;/P&gt;&lt;P&gt;Its PRODUCT OVERLAP WITH COUNTRY 101 divided by COUNTRY 101's unique PRODUCT = 1/1. (A1 / A1)&lt;/P&gt;&lt;P&gt;Its PRODUCT OVERLAP WITH COUNTRY 101 divided by COUNTRY 001 and 101's unique PRODUCT = 1/3. (A1 / A1 +A2 +A3) (Since 001 and 101 's total PRODUCT is A1,A1,A2,A3, but we only care unique value, so duplicated A1 is only counted once)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Keep warm.&lt;/P&gt;</description>
      <pubDate>Fri, 28 Sep 2018 00:40:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-COUNT-distinct-value-of-two-colums/m-p/499740#M133019</guid>
      <dc:creator>yanshuai</dc:creator>
      <dc:date>2018-09-28T00:40:09Z</dc:date>
    </item>
  </channel>
</rss>

