I have:
proc sql;
select COL1, count(distinct COL2 ) as cnt from TBL group by COL1;
quit;
If TBL contains:
col1 col2
A
A XX
Then my output says:
col1 cnt
A 1
But the cnt should be 2. Why is it neglecting the null value?
set a value to missing value if you need it.
data TBL; input col1 $ col2 $; cards; A . A XX ; run; proc sql; select COL1, count(distinct coalescec(COL2,'......' )) as cnt from TBL group by COL1; select COL1, (count(distinct COL2)+(sum(missing(col2)) ne 0)) as cnt from TBL group by COL1; quit;
Xia Keshan
Message was edited by: xia keshan
Count function in proc sql only count nonmissing value of column.
This will include null value also
proc sql;
select col1,count(*) from have
group by col1;
quit;
Here count function count row number of dataset.
set a value to missing value if you need it.
data TBL; input col1 $ col2 $; cards; A . A XX ; run; proc sql; select COL1, count(distinct coalescec(COL2,'......' )) as cnt from TBL group by COL1; select COL1, (count(distinct COL2)+(sum(missing(col2)) ne 0)) as cnt from TBL group by COL1; quit;
Xia Keshan
Message was edited by: xia keshan
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
Check out this tutorial series to learn how to build your own steps in SAS Studio.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.