Use a \raisebox and a \rotatebox in the last row, first cell. The heading is type set in a \parbox inside the \rotatebox:
Example 1 – raisebox, rotatebox and parbox

\documentclass[a4paper, 12pt, headsepline]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{rotating}
\usepackage{makecell}
\renewcommand\theadfont{\bfseries}
\begin{document}
\begin{table}[!h]
\centering
\begin{tabular}{p{1cm}>{\bfseries}ccccccc}
\toprule
& & \multicolumn{6}{c}{\thead{Long text for Data1}} \\
\cmidrule(lr){3-8}
& & \thead{0} & \thead{1} & \thead{2} & \thead{3} & \thead{5} & \thead{10}\\
\midrule
& 0 & ???\,\% & ???\,\% & ???\,\% & ???\,\% & ???\,\% & ???\,\% \\
& 1 & ???\,\% & ???\,\% & ???\,\% & ???\,\% & ???\,\% & ???\,\% \\
& 2 & ???\,\% & ???\,\% & ???\,\% & ???\,\% & ???\,\% & ???\,\% \\
& 3 & ???\,\% & ???\,\% & ???\,\% & ???\,\% & ???\,\% & ???\,\% \\
& 5 & ???\,\% & ???\,\% & ???\,\% & ???\,\% & ???\,\% & ???\,\% \\
\raisebox{35pt}[0pt][0pt]{\rotatebox[origin=c]{90}{\parbox{2.5cm}{\centering Long text for \\ Data2}}} & 10 & ???\,\% & ???\,\% & ???\,\% & ???\,\% & ???\,\% & ???\,\% \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
Example 2 – raisebox, rotatebox and nested tabular
Another possible solution is using nested tabular inside the \rotatebox. The tabular is type set by defining a new command, \tstack. The vertical rule is a \cmidrule that is fined tuned to extend until it meet the horizontal rules. The per cent sign (%) I have moved from cell/column to heading. You may consider to reduce the font size in the headings to footnotesize to make them less dominant.

\documentclass[a4paper, 12pt, headsepline]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage{booktabs, array}
\usepackage{rotating}
\usepackage{makecell}
\renewcommand\theadfont{\bfseries}
% Multi-line left-aligned text with manual line breaks.
% The base line of the whole is at the top row.
\newcommand*{\tstack}[1]{%
\begingroup
\renewcommand*{\arraystretch}{1}%
\begin{tabular}[t]{@{}>{\bfseries}c@{}}#1\\\cmidrule(l{-0.65em}r{-0.65em}){1-1} \end{tabular}%
\endgroup
}
\begin{document}
\begin{table}[!h]
\centering
\begin{tabular}{@{}>{\centering\arraybackslash}p{1cm}>{\bfseries}rcccccc}
\toprule
& & \multicolumn{6}{c}{\thead{Long text for Data1}} \\
\cmidrule(lr){3-8}
& & \thead{0 (\%)} & \thead{1 (\%)} & \thead{2 (\%)} & \thead{3 (\%)} & \thead{5 (\%)} & \thead{10 (\%)}\\
\midrule
& 0 & ??? & ??? & ??? & ??? & ??? & ??? \\
& 1 & ??? & ??? & ??? & ??? & ??? & ??? \\
& 2 & ??? & ??? & ??? & ??? & ??? & ??? \\
& 3 & ??? & ??? & ??? & ??? & ??? & ??? \\
& 5 & ??? & ??? & ??? & ??? & ??? & ??? \\
\raisebox{47pt}[0pt][0pt]{\rotatebox[origin=c]{90}{\tstack{Long text for \\ Data2}}} & 10 & ??? & ??? & ??? & ??? & ??? & ??? \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
Example 3 – nested tabular and vertical rule

If you accept small gaps between the vertical rule in column 1 and the horizontal rules (which I think s OK in this tabular), a more automatic solution is to use an ordinary rule (|) between column 1 and column 2, which you cancel with a multicolumn in row 1 and row. In the example below I have also reduced the font size, which is more pleasant when you use bold.
\documentclass[a4paper, 12pt, headsepline]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage{booktabs, array}
\usepackage{rotating}
\usepackage{makecell}
\renewcommand\theadfont{\bfseries\footnotesize}
% Multi-line left-aligned text with manual line breaks.
% The base line of the whole is at the top row.
\newcommand*{\tstack}[1]{%
\begingroup
\renewcommand*{\arraystretch}{1}%
\begin{tabular}[t]{@{}c@{}}#1\end{tabular}%
\endgroup
}
\begin{document}
\begin{table}[!h]
\centering
\begin{tabular}{@{}>{\footnotesize\bfseries\centering\arraybackslash}p{1.1cm}|>{\bfseries}rcccccc@{}}
\toprule
\multicolumn{1}{c}{} & & \multicolumn{6}{c}{\thead{Long text for Data1}} \\
\cmidrule(l){3-8}
\multicolumn{1}{c}{} & & \thead{0\,(\%)} & \thead{1\,(\%)} & \thead{2\,(\%)} & \thead{3\,(\%)} & \thead{5\,(\%)} & \thead{10\,(\%)}\\
\midrule
& 0 & ??? & ??? & ??? & ??? & ??? & ??? \\
& 1 & ??? & ??? & ??? & ??? & ??? & ??? \\
& 2 & ??? & ??? & ??? & ??? & ??? & ??? \\
& 3 & ??? & ??? & ??? & ??? & ??? & ??? \\
& 5 & ??? & ??? & ??? & ??? & ??? & ??? \\
\raisebox{44pt}[0pt][0pt]{\rotatebox[origin=c]{90}{\tstack{Long text for \\ Data2}}} & 10 & ??? & ??? & ??? & ??? & ??? & ??? \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
\rotheadI expect that instead of\multirow{8}{*}{\rotatebox[origin=c]{90}{\thead{Long text for\\ Data2}}}you will write\multirow{8}{*}{\rothead{\centering Long text for\\ Data2}}:-) – Zarko Jan 21 '20 at 01:36\makeatletter \def\@rothead[#1]#2{\thead{\\[-.65\normalbaselineskip] \turn{\cellrotangle}\thead[#1]{#2}\endturn}} \makeatother(see https://tex.stackexchange.com/questions/8149/) in preamble and than\multirow{8}{*}{\rothead[c]{Long text for\\ Data2}}gives the same result as your approach. Of course, your solution works very wel :-) – Zarko Jan 21 '20 at 10:46\rothead/cellexcept in very simple cases, but the package doesn't seem to be maintained, just likefloatrowfrom the same author. – Bernard Jan 21 '20 at 11:26mcolumn type (from @Ulrike Fischer, https://tex.stackexchange.com/questions/319768/). I would be very glad, if some make fix of themakecellpackage with this two patch (for example similarly as was partly done for thetabupackage). Unfortunately I'm not skilled for such job :-( – Zarko Jan 21 '20 at 11:49