2012-09-28 119 views
3

我有一个麻烦的SQL查询,我试图使用 Entrinsik的Informer。我希望Informer对我的 结果执行计算,以使用javascript制作一个百分比。但是,Informer没有 访问数据列的能力(即我的总数为 百分比),所以我需要我的SQL查询为我生成这个数据。结果 目前看起来是这样的:使用MySQL/Javascript计算百分比

refund_code refund_amount month_group 
----------- ------------- ----------- 
ref1    10   january 
ref2    20   january 
ref3    30   january 
ref1    40   february 
ref2    50   february 
ref3    60   february 

我想什么是这样的:

refund_code refund_amount month_group month_total 
----------- ------------- ----------- ----------- 
ref1    10   january     60 
ref2    20   january     60 
ref3    30   january     60 
ref1    40   february    150 
ref2    50   february    150 
ref3    60   february    150 

我的查询如下:

SELECT mr.month_group, 
    bd.transaction_code AS refund_code, 
    SUM(bd.extended) AS refund_amount 
FROM billing_details AS bd 
    LEFT JOIN monthly_ranges AS mr 
     ON (bd.entry_date BETWEEN mr.start_date AND mr.end_date) 
WHERE bd.transaction_code IN ('REFPRI', 'REFSEC', 'REFPT', 'REFREQPRI') 
    AND bd.entry_date >= '2012-01-05' 
GROUP BY mr.month_group, bd.transaction_code 
ORDER BY mr.month_group, bd.transaction_code 

并产生第二查询每月总计表如下所示:

SELECT mr.month_group, 
    SUM(bd.extended) AS refund_amount 
FROM billing_details AS bd 
    LEFT JOIN monthly_ranges AS mr 
     ON (bd.entry_date BETWEEN mr.start_date AND mr.end_date) 
WHERE bd.transaction_code IN ('REFPRI', 'REFSEC', 'REFPT', 'REFREQPRI') 
    AND bd.entry_date >= '2012-01-05' 
GROUP BY mr.month_group 
ORDER BY mr.month_group 

那么有什么方法可以将两者结合?

回答

1

你在技术上可以从字面上加入这两个子查询。

SELECT m.refund_code, m.refund_amount, m.month_group, t.month_total 
FROM (your refund query above) m 
JOIN (your total query above) t 
    ON m.month_group = t.month_group 

只要确保你在为“month_total”或类似名称的“总的查询”重命名“REFUND_AMOUNT”。