Muriatic Acid is probably your best bet. I used to work in industrial concrete construction, we'd use it all the time.
There are also various detergents you can use, and pick them up from a professional paint store for the best bet - not the homeowner type of stores.
Industrial painters often need to coat concrete w/stains and epoxies, etc., so they prep using some high-tech detergents, high-pressure water blasters, and often muriatic acid.
To wash concrete, it needs to be at least....oh no, I'm forgetting!...I want to say at least 60 days. 30 days at a minimum, but 60 days you will have a full "cure."
What I would do if I were you is:
Wash it w/industrial detergent, using a water or hydro-blaster (rent one).
Finish it with muriatic acid, following the label.
Repeat if necessary (depending on the oil stains, etc.). Sometimes you will have to spot-clean using a wire brush, too. Ouch.