Where are you actually moving the character at? If it were me, I would have the max walk speed permanently be the value of the running speed, and then only apply some of that if running is false. I have attached a picture of what I would do for the W key (MoveForward), and then for left, right, back, I would only apply the AxisValue * 0.6, since you can’t run those directions.
Wherever you are actually moving your character, you can check to see if the sprinting value is true, and apply a different value if it is (Like I am doing in the example). Does that make sense? There are better (more complex) ways of doing this, but this should work.
If you are unfamiliar with Axis mappings, they are kind of like your Sprint input mapping, except the AxisValue variable is set to 1 when the key is pressed, and 0 when it is not.