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の合計を出力するという動的なクエリが必要です。

意図するために、前の表から、私は持っていたいです

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 に答える