First of all, the DATALABEL option putting the values under the bars to prevent collision with the CI limits. Since you will be using TEXT plots, just remove that option.
As for the p-value. you can also do that with a TEXT plot. I add the additional data and code to the previous example:
data cars;
set sashelp.cars;
length pvalue_str $ 7;
pvalue = 0.001;
ucl = Invoice+(Invoice*.05);
lcl = invoice-(Invoice*.05);
if _N_ LE 6;
if _N_ in (1,3,5) then odds =1;
else odds = 0;
if _N_ in (1,2) then parameter = "Group A";
else if _N_ in (3,4) then parameter = "Group B";
else parameter = "Group C";
/* Set the text position based on the odds value */
if odds = 0 then position="topright";
else position="topleft";
/* Add example p-values */
rotate=0;
pvalue_str="";
if _N_ in (3,4) then do;
rotate=45;
pvalue_str="P<" || put(pvalue, F5.3);
end;
run;
proc sgplot data=cars;
vbarparm category=parameter response=invoice
/ groupdisplay=cluster group=odds
limitlower=lcl limitupper=ucl LIMITATTRS=(color=darkslategrey);
styleattrs datacolors=(green purple) datacontrastcolors=(green purple);
text x=parameter y=invoice text=invoice / position=position group=odds groupdisplay=cluster;
text x=parameter y=ucl text=pvalue_str / position=topright group=odds groupdisplay=cluster rotate=rotate;
yaxis label = "Invoice" display=(noline noticks) grid offsetmin=0;
xaxis display=(nolabel);
run;
Notice that I added OFFSETMIN=0 to the YAXIS in this case, because I knew all bar were positive, and I did not want the bars to "float" due the TEXT plot values. In your case, you have positive and negative values, so that should be removed. There is also an option on the TEXT plot called CONTRIBUTEOFFSETS=none that will disable the TEXT plot from being considered for axis offset calculations. It's a useful option, but I do not think it is needed for your case.
... View more