在sql查询结果

时间:2016-06-03 13:51:57

标签: sql sql-server

我有一个查询结果,格式如下。

Price      Quarter  
 80          Q1      
 40          Q2

我需要计算%值并需要显示' NA'对于Q1和2需要显示Q2

期望的结果是

Price      Quarter  %Value
 80          Q1      NA
 40          Q2      2=(80/40)

我将如何获得所需的结果?

2 个答案:

答案 0 :(得分:0)

嗯。您的结果非常具体。以下可能是您想要的:

select price, quarter,
       (case when quarter = 'Q1' then NULL
             else value * 1.0 / sum(value) over ()
        end) as col
from q;

答案 1 :(得分:0)

表格两个相邻行中值的计算函数(按某种顺序)的任何问题都可以通过将表连接到自身来回答,其中连接基于“previous”值。有关说明,请参阅我的running totals示例。

您的代码看起来像这样。您提供的数据不足以提供完整的答案(没有年份,没有识别密钥),但我希望这可以帮助您入门。

select Q.price, Q.quarter, Q.value/P.value as '%value'
from (
     select a.quarter, a.value, max(b.quarter) as prior
     from T as a left join T as b
     on a.quarter > b.quarter
     group by a.price, a.quarter
) as Q
join T as P -- prior
on Q.prior = P.quarter