2014-09-22 16 views
0

我想執行一個查詢,我可以得到一個列的總和基於where子句和組日期,但它不像我會期望和不知道爲什麼。如何返回基於使用的地方和集合的多個結果

我有交易的一個表:

時間戳(TRANSACTION_DATE
的值(),
一個類型(婚前或支出),
透水平衡之前交易(進行),
和期末餘額(餘額)。

這裏是我的表的JSON出口:

[ 
    { 
     "id":"2", 
     "type":"payout", 
     "carry":"2340", 
     "amount":"50", 
     "balance":"2290", 
     "transaction_date":"2014-09-15 00:00:00", 
    }, 
    { 
     "id":"1", 
     "type":"payin", 
     "carry":"340", 
     "amount":"2000", 
     "balance":"2340", 
     "transaction_date":"2014-09-22 09:10:03", 
    }, 
    { 
     "id":"3", 
     "type":"payout", 
     "carry":"0", 
     "amount":"50", 
     "balance":"0", 
     "transaction_date":"2014-09-22 09:10:03", 
    }, 
    { 
     "id":"4", 
     "type":"payin", 
     "carry":"1", 
     "amount":"30", 
     "balance":"1", 
     "transaction_date":"2014-09-22 09:10:03", 
    } 
] 

我試圖做到的,是讓每個日期單行(日曆日期,而不是一個時間戳),其中包含:
日期之前任天交易的(再次日曆不時間戳),
初始攜帶,
總和Payins的那天,
和支出的那天,
一天,最終收盤平衡。

目前我只得到一個結果,它似乎忽略由組(均payins和所有支出相加,無論行日期)

SELECT DATE(`transaction_date`) as day, 
SUM(amount) AS pay_in 
FROM transactions 
WHERE type='payin' GROUP BY day 

這是我使用的是完整的查詢(減去進和平衡)

SELECT payins.day, payins.pay_in, payouts.pay_out 
From 
    (SELECT DATE(`transaction_date`) as day, 
    SUM(amount) AS pay_in FROM transactions 
    WHERE type='payin' GROUP BY DATE(`transaction_date`) 
    ) payins 
LEFT JOIN 
    (SELECT DATE(`transaction_date`) as day, SUM(amount) AS pay_out 
    FROM transactions 
    WHERE type='payout' 
    GROUP BY DATE(`transaction_date`) 
    ) payouts 
ON payins.day = payouts.day 
Group By day 

如果它讓我使用MAMP 3.0.4在OSX 10.9

回答

2

你並不需要使用子查詢在這種情況下任何區別,您可以使用SUMCASE。此外,你的分組出現我返回2個結果您的樣本數據是工作的罰款(見提供的小提琴):

SELECT Date(transaction_date) date, 
    SUM(CASE WHEN type='payin' THEN amount END)) payinsum, 
    SUM(CASE WHEN type='payout' THEN amount END) payoutsum 
FROM transactions 
GROUP BY date