1

Why doesn't this work i'm trying to get the previous and current value to calculate percent change. I get both values correctly but now how can I reuse them to do the math operatio

When I try the below command I get ERROR 1054 (42S22): Unknown column 'currentVal' in 'field list'

            SELECT IFNULL(DValue,0) as currentVal, 
                      (SELECT IFNULL(DValue,0) 
                       FROM ...
                       WHERE...) as previousVal, 
                      (currentVal-previousVal)/previousVal
            FROM ...
            WHERE ...;
OMG Ponies
  • 314,254
  • 77
  • 507
  • 490
user391986
  • 27,330
  • 37
  • 120
  • 195

2 Answers2

2

you can't reference an aliased column in the same SELECT, you have to put it in a subquery:

SELECT currentVal, previousVal, (currentVal-previousVal)/previousVal
FROM (
            SELECT    IFNULL(DValue,0) as currentVal, 
                      (SELECT IFNULL(DValue,0) 
                       FROM ...
                       WHERE...) as previousVal, 
            FROM ...
            WHERE ...) T;
manji
  • 46,486
  • 4
  • 90
  • 101
1

Wrap another query around what you currently have and calculate your percentage there:

SELECT currentVal, previousVal, 
       (currentVal-previousVal)/previousVal AS percentChange
    FROM (SELECT IFNULL(DValue,0) as currentVal, 
                  (SELECT IFNULL(DValue,0) 
                       FROM ...
                       WHERE...) as previousVal
              FROM ...
              WHERE ...) t
Joe Stefanelli
  • 128,689
  • 18
  • 228
  • 231