повторное использование псевдонима в SELECT - PullRequest
5 голосов
/ 16 августа 2011

Что я пытаюсь сделать, это добавить еще один столбец, который вычисляет (cr - dr)

Поскольку вы не можете повторно использовать псевдоним внутри предложения SELECT, как бы вы поступили с калькулатином total

    SELECT SUM(b.bet_win * cy.fx_rate )as dr, SUM(b.bet_loss * cy.fx_rate ) as cr, cr+dr as total
    FROM ....
    WHERE ....

Ответы [ 3 ]

9 голосов
/ 16 августа 2011

В SQL Server или Oracle я бы использовал CTE, но поскольку вы используете MySQL, вы бы использовали подзапрос:

SELECT dr, cr, cr + dr as total 
FROM (
    SELECT 
         SUM(b.bet_win * cy.fx_rate ) as dr, 
         SUM(b.bet_loss * cy.fx_rate ) as cr
    FROM ....
    WHERE ....) t;
7 голосов
/ 22 ноября 2013

РЕДАКТИРОВАТЬ: НЕ РАБОТАЕТ. Смотрите комментарии. Разве в этом случае не используется пользовательская переменная быстрее?

SELECT
  @dr:=SUM(b.bet_win * cy.fx_rate ),
  @cr:=SUM(b.bet_loss * cy.fx_rate ), 
  @cr+@dr as total
1 голос
/ 03 августа 2015

Вы можете повторить вычисления в столбце «Итого».

SELECT 
    SUM(b.bet_win * cy.fx_rate) as dr, 
    SUM(b.bet_loss * cy.fx_rate) as cr, 
    SUM(b.bet_win * cy.fx_rate) + SUM(b.bet_loss * cy.fx_rate) as total
FROM ....
WHERE ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...