You can use "dummy" axis environments inside the same tikzpicture to generate the axis lines above the plot. As long as you make sure that the axis ranges are the same, they will align nicely. To get the tick values, you can set xticklabel={\pgfmathparse{sqrt(\tick*0.01/(2*#1))}\pgfmathprintnumber{\pgfmathresult}} which will convert the D value to n(D). That will get you something similar to the Excel output you posted.
To one-up Excel, we can also only plot nice round tick values. We want to be able to specify which ticks to show (0, 1, 1.5 and 2, for example) and let PGFPlots figure out where on the axis these values go. This requires a bit of trickery: We can plot an invisible plot of the inverse of the n(D) function, with the independent variable (in this case n(D)) plotted on the y-axis, and the dependent one (D) plotted on the x axis. By using the option xtick=data, tick labels will only appear at the positions of the samples we specified.
This might seem like a lot of work, but once we've figured it out, we can wrap it in a little macro like \fakexaxis{<value for s>}{<vertical offset>}{<tick positions>} and then simply say
\begin{axis}[
xlabel=$D$,
ylabel={$q$},axis x line=bottom, axis y line=left
]
\addplot[blue,mark=none,domain=0:100, samples=50, smooth,enlargelimits=upper] {sqrt(2*0.1*x/0.01)};
\addplot[green,mark=none,domain=0:100, samples=50, smooth,enlargelimits=upper] {sqrt(2*0.01*x/0.01)};
\end{axis}
\fakexaxis{0.1}{7ex}{0,1,1.5,2}
\fakexaxis{0.01}{2ex}{0,2,3,...,7}
to generate the following output. I'd say the effort is worth it...

\documentclass[11pt]{article}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\newcommand{\fakexaxis}[3]{
\begin{axis}[
hide y axis,
yshift=#2,
axis x line=top,
x axis line style={latex-},
xlabel={$s=#1$}, every axis x label/.style={at={(1,1)}, anchor=west},
domain=0:2,
samples at={#3},
xmin=0, xmax=100,
% Convert from D to n(D)
xticklabel={\pgfmathparse{sqrt(\tick*0.01/(2*#1))}\pgfmathprintnumber{\pgfmathresult}},
% tick marks only at sample points
xtick=data
]
% Use the inverse function D = f(n(D)) to find values for D at which to place tick marks (don't actually draw the function)
\addplot [draw=none] ({\x^2*2*#1/0.01},\x);
\end{axis}
}
\begin{tikzpicture}
\begin{axis}[
xlabel=$D$,
ylabel={$q$},axis x line=bottom, axis y line=left
]
\addplot[blue,mark=none,domain=0:100, samples=50, smooth,enlargelimits=upper] {sqrt(2*0.1*x/0.01)};
\addplot[green,mark=none,domain=0:100, samples=50, smooth,enlargelimits=upper] {sqrt(2*0.01*x/0.01)};
\end{axis}
\fakexaxis{0.1}{7ex}{0,1,1.5,2}
\fakexaxis{0.01}{2ex}{0,2,3,...,7}
\end{tikzpicture}
\end{document}