知礼部贡举，后来因遭弹劾被降职知蕲州，元丰五年（1082年）又以龙图阁待制知扬州、郓州，次年调任兵部侍郎，元丰八年（1085年）以龙图阁直学士知成都府。元祐三年（1088年）入京为翰林学士，升尚书右丞。后来第二次遭弹劾被降职为资政殿学士，知定州、扬州、大名府。绍圣元年（1094年）再次入京任吏部尚书、尚书左丞，进正议大夫中书侍郎。元符三年（1100年）参与拥立宋徽宗即位，进门下侍郎、金紫光禄大夫，又因为平定了鄯州、廊州，收复了河湟，被升特进。崇宁三年（1104年），第三次遭御史中丞朱谔弹劾被降为资政殿大学士