присвоение значения mysql переменной inline - PullRequest
1 голос
/ 11 апреля 2011

Почему это не работает, я пытаюсь получить предыдущее и текущее значение, чтобы рассчитать процентное изменение.Я получаю оба значения правильно, но теперь как я могу использовать их для выполнения математических операций

Когда я пытаюсь выполнить приведенную ниже команду, я получаю ОШИБКУ 1054 (42S22): неизвестный столбец 'currentVal' в 'списке полей'

            SELECT IFNULL(DValue,0) as currentVal, 
                      (SELECT IFNULL(DValue,0) 
                       FROM ...
                       WHERE...) as previousVal, 
                      (currentVal-previousVal)/previousVal
            FROM ...
            WHERE ...;

Ответы [ 2 ]

2 голосов
/ 11 апреля 2011

вы не можете ссылаться на столбец с псевдонимом в том же SELECT, вы должны поместить его в подзапрос:

SELECT currentVal, previousVal, (currentVal-previousVal)/previousVal
FROM (
            SELECT    IFNULL(DValue,0) as currentVal, 
                      (SELECT IFNULL(DValue,0) 
                       FROM ...
                       WHERE...) as previousVal, 
            FROM ...
            WHERE ...) T;
1 голос
/ 11 апреля 2011

Оберните другой запрос вокруг того, что у вас есть, и рассчитайте свой процент там:

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
...