2015-02-11 75 views
0

我有下面的查詢將返回單列值列表如下:SQL服務器拆單排爲兩行

SELECT r_squared = CASE WHEN SS_tot = 0 THEN 1.0 ELSE 1.0 - (SS_err/SS_tot) END, 
      Std_Dev, 
      Alpha, 
      SS_tot, 
      SS_err, 
      Beta1, 
      Beta2, 
      StdErrVar1, 
      StdErrVar2, 
      CASE WHEN @Const = 0 THEN NULL ELSE Beta1 + (@Const * StdErrVar1) END UpperLimit1, 
      CASE WHEN @Const = 0 THEN NULL ELSE Beta1 - (@Const * StdErrVar1) END LowerLimit1, 
      CASE WHEN @Const = 0 THEN NULL ELSE Beta2 + (@Const * StdErrVar2) END UpperLimit2, 
      CASE WHEN @Const = 0 THEN NULL ELSE Beta2 - (@Const * StdErrVar2) END LowerLimit2       
    FROM AlphaCalc 
    CROSS JOIN BetaCalc 
    CROSS JOIN SSCalc 

r_squared   Std_Dev    Alpha    SS_tot    SS_err    Beta1     Beta2    StdErrVar1   StdErrVar2   UpperLimit1   LowerLimit1   UpperLimit2  LowerLimit2 
+----------------------------------------------------------------------------------------------------------------------------------------+ 
0.931325401666624 1.08724114970357 -11.8437899314731 154.916666666667 10.6388398584788 -0.00448725387963724 1.00559107829696 0.00927464483890608 0.0909196724390537 0.0161779426244307 -0.0251524503837052 1.20817273286953 0.803009423724394 

但我需要輸出如下:

Variable rsquared StErr StDev Coefficients Standard Error Lower 95% Upper 95% 
+-----------------------------------------------------------------------------------------+ 
Beta1 0.931325402 10.63883986 154.9166667 -0.004487254 0.009285177 -0.025491783 0.016517276 
Beta2 0.931325402 10.63883986 154.9166667 1.005591078 0.091022919 0.79968293 1.211499227 
+0

SELECT * FROM其中β1的未離子所有選擇*從哪裏beta2? – jarlh 2015-02-11 07:53:11

+0

請提供每個表中使用的示例數據。謝謝。 – Rigel1121 2015-02-11 07:56:55

回答

1

基礎的我的你的問題的理解,我認爲這是你所需要的:

(select 'Beta1' as Variable, r_squared as rsquared, SS_err as StErr, SS_tot as 'StDev', 
     Beta1 as Coefficients, StdErrVar1 as 'Standard Error', 
     LowerLimit1 as 'Lower 95%',UpperLimit1 as 'Upper 95%' 
from  
    (SELECT r_squared = CASE WHEN SS_tot = 0 THEN 1.0 ELSE 1.0 - (SS_err/SS_tot) END, 
    Std_Dev, Alpha, SS_tot, SS_err, Beta1, Beta2, StdErrVar1, StdErrVar2, 
    CASE WHEN @Const = 0 THEN NULL ELSE Beta1 + (@Const * StdErrVar1) END UpperLimit1, 
    CASE WHEN @Const = 0 THEN NULL ELSE Beta1 - (@Const * StdErrVar1) END LowerLimit1, 
    CASE WHEN @Const = 0 THEN NULL ELSE Beta2 + (@Const * StdErrVar2) END UpperLimit2, 
    CASE WHEN @Const = 0 THEN NULL ELSE Beta2 - (@Const * StdErrVar2) END LowerLimit2 
    FROM AlphaCalc 
    CROSS JOIN BetaCalc 
    CROSS JOIN SSCalc) as dat1 
) 
union all 
(select 'Beta2' as Variable, r_squared as rsquared, SS_err as StErr, SS_tot as 'StDev', 
     Beta2 as Coefficients, StdErrVar2 as 'Standard Error', 
     LowerLimit2 as 'Lower 95%',UpperLimit2 as 'Upper 95%' 
from  
    (SELECT r_squared = CASE WHEN SS_tot = 0 THEN 1.0 ELSE 1.0 - (SS_err/SS_tot) END, 
    Std_Dev, Alpha, SS_tot, SS_err, Beta1, Beta2, StdErrVar1, StdErrVar2, 
    CASE WHEN @Const = 0 THEN NULL ELSE Beta1 + (@Const * StdErrVar1) END UpperLimit1, 
    CASE WHEN @Const = 0 THEN NULL ELSE Beta1 - (@Const * StdErrVar1) END LowerLimit1, 
    CASE WHEN @Const = 0 THEN NULL ELSE Beta2 + (@Const * StdErrVar2) END UpperLimit2, 
    CASE WHEN @Const = 0 THEN NULL ELSE Beta2 - (@Const * StdErrVar2) END LowerLimit2 
    FROM AlphaCalc 
    CROSS JOIN BetaCalc 
    CROSS JOIN SSCalc) as dat2 
)