Some interesting stats about the Crewe by-election from UK Polling Report.
The local elections on May 1st saw the Tories get 45%, with Labour on 28% and Lib Dems on 19%.
The first polls, a week after the local elections, showed Tories on 51%, Labour 30% and Lib Dems 15%.
A week later, Labour was up a bit, though still way behind, on 34%, Tories on 49% with Lib Dems down to 13%.
The actual result was Tories 49.5%, Labour 30.6%, Lib Dem 14.6%. So the short campaign period seems to have involved a modest up turn in the Labour vote, mostly at the expense of the Lib Dems, but then falling back again in the last few days.
Also worth noting that the swing of 17% was considerably less than the 26.5% swing against Labour in the Birmingham Hodge Hill by-election in 2004 (though obviously on a national level it is worse for Labour to be losing support to the Tories than to the Lib Dems).