2015-07-28 5 views
0

Я хочу сделать скользящую сумму столбца. Я создал следующий запрос:MySql Вопрос о переводе

SET @FinancialIncremental:=0; 
SELECT j.ErrorCategory, 
     COUNT(IF(j.ErrorType = 'P',j.ErrorType,NULL)) AS Financial, 
     COUNT(IF(j.ErrorType = 'NP',j.ErrorType,NULL)) AS Procedural, 
     SUM(j.OverPaymentAmount) AS 'Financial Over Paid Amount ($)',  
     (
      SELECT 
       @FinancialIncremental := @FinancialIncremental + q1.c 
      FROM 
      ( 
       (SELECT 
       COUNT(IF(ErrorType = 'P',ErrorType,NULL)) AS c 
       FROM DemoScheme.TestTable WHERE IsDeleted = 0 AND ErrorType IN ('P','NP') 
       GROUP BY ErrorCategory) AS q1 
      ) 
     ) AS 'Financial Incremental' 
FROM DemoScheme.TestTable j WHERE IsDeleted = 0 AND ErrorType IN ('P','NP') 
GROUP BY ErrorCategory; 

Но это дает мне ошибку. Это дает мне ошибку на подзапроса

Код ошибки «Финансовый инкрементных»: 1242. подзапрос возвращает более чем на 1 строку

Может кто-нибудь помочь мне решить эту проблему?

ответ

0

У вас есть несколько повторений, которые излишне усложняют ситуацию, попробуйте этот запрос. Вам также может потребоваться заменить NULL на 0 при его добавлении.

SET @FinancialIncremental:=0; 
SELECT j.ErrorCategory, 
     COUNT(IF(j.ErrorType = 'P',j.ErrorType,NULL)) AS Financial, 
     COUNT(IF(j.ErrorType = 'NP',j.ErrorType,NULL)) AS Procedural, 
     SUM(j.OverPaymentAmount) AS 'Financial Over Paid Amount ($)',  
     (@FinancialIncremental := @FinancialIncremental + COUNT(IF(j.ErrorType = 'P',j.ErrorType,0)) 
AS 'Financial Incremental' 
FROM DemoScheme.TestTable j WHERE IsDeleted = 0 AND ErrorType IN ('P','NP') 
GROUP BY ErrorCategory; 
+0

Спасибо за ответ. Я попробовал ваш запрос. А также измените NULL на 0. Это дает тот же результат, что и результат «Финансовый», если строки в столбце «Финансы» похожи на 1,1,1,5,1,4. Ожидаемый результат в столбце «Финансовый инкрементный» равен 1, 2,3,8,9,13 и т. Д. –

+0

'@FinancialIncremental' не удерживает предыдущую добавленную стоимость. –

+0

@AjayPunekar Можем ли мы иметь маленькую скрипту sql? – Mihai