One could write a book on this....
One of the biggest differences between an analyst and a programmer is that an analyst is expected to understand the company's business processes so he or she can put the knowledge gained from an analysis into context. An analyst may or may not be a programmer or statistician, but the constant is business knowledge.
A SAS programmer, on the other hand, is expected to have in depth knowledge of SAS coding techniques and the tools to build analysis sets. These days, they often need to have broader SQL skills to interact with the business data stores. Experienced programmers often have a lot of knowledge of the business processes, but it is not a general requirement.
At the Duke Clinical Research Institute, our analysts are usually statisticians who create "reports" from SAS datasets created by our SAS Programmers. Our "reports" are often several hundred pages of tabulations and typically also include statistical models and significance tests.