The results are incorrect because you are comparing the month independently from the year so only month 3 and 4 will be included in your results for either year. i.e. your totals will reflect 2013/03, 2013/04, 2014/03 & 2014/04
What you need to do is create a date range from your parameters and then create a date from your data and then check to see if it falls within the desired range.
So your where clause should look something like:
where convert(datetime, s.tranyear + s.tranmonth + s.trandate) between
convert(datetime, '20130401') and convert(datetime, '20140331')
Be aware that different date cultures need different parameters to the convert routine so you may need to do a bit more digging.
Good luck