The answer to your question is yes, but I don't think you are asking the right question. You haven't said what you are trying to do, but your code sample doesn't do anything useful.
//row[(position()-1)]/MONTH_ID
When a number N is used in a predicate, it means [position()=N], so your predicate means [position() = position() - 1], which will always be false.
I think you are forgetting that the result of position() is sensitive to context, and the context inside a predicate is not the same as the context outside. The answer is to bind a variable:
<xsl:variable name="p" select="position()"/>
<xsl:value-of select="//row[$p - 1]/MONTH_ID"/>