2013-06-03 2 views
0

У меня есть запрос, возвращающий 24 строки. Я хочу разделить SUM из tirst 12 index на SUM следующий 12 index. Я использую ROW_NUMBER, но не могу фильтровать row. Как я могу это сделать?разделите два SUM из двух интервалов

SELECT ROW_NUMBER() OVER(ORDER BY [Year] DESC,[Month] DESC) AS Row,[Year], [Month], 
    PCode_9, [Index] 
FROM tbl08 
WHERE PCode = @Code AND 
    (([Year] * 12 + [Month]) <= @CurrentYearMonth) AND 
    (([Year] * 12 + [Month]) >= @FCurrentYearMonth) AND row > 12 <-- ERROR 
ORDER BY [Year] DESC,[Month] DESC 

благодаря

ответ

1

Поскольку Ваш запрос возвращает 24 rowsTry, как это

Select t.*,(Sum(Case when row<=12 then Index else 0 End)/ 
Sum(Case when row>12 then Index else 0 End)) as Result from 
(
SELECT ROW_NUMBER() OVER(ORDER BY [Year] DESC,[Month] DESC) AS Row,[Year], [Month], 
PCode_9, [Index] 
FROM tbl08 
WHERE PCode = @Code AND 
(([Year] * 12 + [Month]) <= @CurrentYearMonth) AND 
(([Year] * 12 + [Month]) >= @FCurrentYearMonth) AND row > 12 <-- ERROR 
ORDER BY [Year] DESC,[Month] DESC 
) t 
Смежные вопросы