2011-02-14 91 views
1

这是我的查询如何使用MySQL查询

SELECT currency_code, SUM(
CASE 
WHEN TYPE = 'buy' 
THEN to_amount 
END) AS BUY, SUM(
CASE 
WHEN TYPE = 'sell' 
THEN to_amount 
END) AS SELL, SUM(
CASE 
WHEN TYPE = 'sell' 
THEN rate 
END) AS SELL_RATE, SUM(
CASE 
WHEN TYPE = 'buy' 
THEN rate 
END) AS BUY_RATE 
FROM tb_currency 
LEFT JOIN tb_bill ON tb_currency.CURRENCY_ID = tb_bill.CURRENCY_ID 
AND tb_bill.TYPE 
IN (
'buy', 'sell' 
) 

分的输出是

enter image description here

现在,我想与价值来划分的买入字段中的值BUY_RATE字段。我之前尝试了几个查询,并收到错误消息“未知列类型BUY”。 如何解决这个问题?

回答

1

你需要做一个子查询,这个东西

SELECT *, (BUY/BUY_RATE) AS DIV_VALUE FROM (
    SELECT currency_code, SUM(
    CASE 
    WHEN TYPE = 'buy' 
    THEN to_amount 
    END) AS BUY, SUM(
    CASE 
    WHEN TYPE = 'sell' 
    THEN to_amount 
    END) AS SELL, SUM(
    CASE 
    WHEN TYPE = 'sell' 
    THEN rate 
    END) AS SELL_RATE, SUM(
    CASE 
    WHEN TYPE = 'buy' 
    THEN rate 
    END) AS BUY_RATE 
    FROM tb_currency 
    LEFT JOIN tb_bill ON tb_currency.CURRENCY_ID = tb_bill.CURRENCY_ID 
    AND tb_bill.TYPE 
    IN (
    'buy', 'sell' 
    ) 
) 
+0

感谢等。我也发现这个答案更多更好的解决方案http://stackoverflow.com/questions/190251/in-mysql-can-you-divide-one-alias-by-another – cyberfly 2011-02-14 08:21:38