Singleton is like a service, as already mentioned. Pro is its flexibility.
Static, well, you need some static parts in order to implement Singleton.
Singleton has code to take care of instantiation of th actual object, which can be a great help if you run into racing problems. In a static solution you may need to deal with racing problems at multiple code locations.
However, same as Singleton can be constructed with some static variables, you may be able to compare it with 'goto'. It can bevery useful for building other structures, but you really need to know how to use it and should not 'overuse' it. Therefore general recommendation is to stick to Singleton, and use static if you have to.
also check the other post: Why choose a static class over a singleton implementation?