1

我有这张桌子:

idTransactions  idCampaignsList idMemberCard    amountOriginal  amountFinal   dateTransaction
1   2   1   50.00   100.00          2012-10-31 12:45:41
2   3   1   0.00    -50.00          2012-10-31 12:47:25
3   2   2   255.00  255.00          2012-10-31 17:19:07
4   1   2   95.00   95.00           2012-11-02 20:38:36
5   3   2   0.00    -400.00         2012-11-02 20:39:50
24  1   4   10.00   2.00            2012-11-03 11:16:3

有了这个查询

SELECT  SUM(amountOriginal) AS euro,
SUM(amountFinal) AS deducted,
EXTRACT(YEAR_MONTH FROM(dateTransaction)) AS period
FROM transactions 
INNER JOIN campaignsList ON campaignsList.idCampaignsList = transactions.idCampaignsList 
INNER JOIN customers ON customers.idCustomer = campaignsList.idCustomer 
WHERE   customers.idCustomer = 14
        AND
        transactions.idCampaignsList = 2
GROUP BY period
ORDER BY period

我得到这个结果

euro             deducted   period
305.00           305.00         201210
14860.46            -22758.50   201211
1845.00         -34710.00   201212

过去 12 个月,“充电”和放电的总和。

现在,idCampaignsList 可能是 1、2,也可能是 500,这取决于我的 idCustomer 有多少“活动”(通过 JOIN 检索)。

我想要一个动态查询,即“对于每个”idCampaignsList,打印我的 amountOriginal 和 amountFinal 的总和。

打算从 previos 表中,我想

idCampaignsList    SUM(amountOriginal)   SUM(amountFinal)  period
1                  50                    50                201210
2                  255                   255               201210
2                  95                    -305              201211
4                  10                    2                 201211

因此,对于每个时期,对每个不同的 idCampaignsList 列求和,其中 idCampaignsList 是动态的(SELECT idCampaignsList FROM myOtherTable where idCustomer = 14)

4

1 回答 1

1

我想要一个动态查询,即“对于每个”idCampaignsList,打印我的 amountOriginal 和 amountFinal 的总和。

我认为several For each你的意思是一个GROUP BY transactions.idCampaignsList.

尝试将 添加transactions.idCampaignsList到列表中,从子句SELECT中删除谓词并在子句中列出该列,如下所示:transactions.idCampaignsList = 2WHEREGROUP BY

SELECT  
  transactions.idCampaignsList
  SUM(amountOriginal) AS euro,
  SUM(amountFinal) AS deducted,
  EXTRACT(YEAR_MONTH FROM(dateTransaction)) AS period
FROM transactions 
INNER JOIN campaignsList
        ON campaignsList.idCampaignsList = transactions.idCampaignsList 
INNER JOIN customers 
        ON customers.idCustomer = campaignsList.idCustomer 
WHERE customers.idCustomer = 14
GROUP BY period, transactions.idCampaignsList
ORDER BY period
于 2012-12-06T06:32:28.170 回答