The question, as posted by others is whether the method should be virtual or static.
Polymorphism is based on the idea that you are calling a behavior of the particular object instance regardless of what type of reference you have to it.
base& somefunction(); // may return base or derived objects
base &b = somefunction();
b.method();
Now, if method behavior changes from base to derived and you want the behavior of the real instance you are referring to, then you need polymorphism and thus a virtual method. The fact that the method may or not use member data is irrelevant, the important part is that it is a behavior bound to the particular instance.
On the other end, static methods are bound to the class. That is, it is a behavior of the class you are dealing with not a behavior of the instance being referred. As such, even if the syntax above can be used it will call the static method in class base since that is the class that you are dealing with.
There is no reason to determine that any of the design options you are dealing with is better than the other without a deeper knowledge of the domain. I hope the reasoning above helps you make a decision.