我有一張名爲增值稅的表,我需要生成每月增值稅報告。所以下面是我做的......一個「選擇」查詢生成12個結果集
SELECT SUM(Amount) AS "January"
WHERE current_time_stamp BETWEEN '2014-01-01' AND '2014-01-310'
FROM VAT
就像上面的查詢,我有一月,二月,三月等12個查詢因此,而不是寫12,是有辦法,我可以得到所有這些在1查詢?
我有一張名爲增值稅的表,我需要生成每月增值稅報告。所以下面是我做的......一個「選擇」查詢生成12個結果集
SELECT SUM(Amount) AS "January"
WHERE current_time_stamp BETWEEN '2014-01-01' AND '2014-01-310'
FROM VAT
就像上面的查詢,我有一月,二月,三月等12個查詢因此,而不是寫12,是有辦法,我可以得到所有這些在1查詢?
可以使用條件和使用case語句,下面的查詢會給你12一排作爲每個月的總和列
SELECT
SUM(case when current_time_stamp BETWEEN '2014-01-01' AND '2014-01-31' then Amount else 0 end) AS `January` ,
SUM(case when current_time_stamp BETWEEN '2014-02-01' AND '2014-02-29' then Amount else 0 end) AS `Febuary` ,
.
.
.
SUM(case when current_time_stamp BETWEEN '2014-12-01' AND '2014-12-31' then Amount else 0 end) AS `December`
FROM VAT
使用GROUP BY
,像這樣:
SELECT SUM(Amount), MONTH(current_time_stamp) AS `Month`
FROM VAT
WHERE current_time_stamp BETWEEN '2014-01-01' AND '2014-12-31'
GROUP BY MONTH(current_time_stamp)
但是,它可能是緩慢的情況下,你有很多的記錄。
喜歡的東西,擴大到十二個月
SELECT MAX(X.January) AS January, MAX(X.February) AS February FROM
(
SELECT SUM(Amount) AS January, 0 AS February
WHERE current_time_stamp BETWEEN '2014-01-01' AND '2014-01-31'
FROM VAT
UNION
SELECT 0 AS January, SUM(Amount) AS February
WHERE current_time_stamp BETWEEN '2014-02-01' AND '2014-02-29'
FROM VAT
) X
或者你也可以這樣做:
SELECT 'January' AS Month, SUM(Amount) AS Amount
WHERE current_time_stamp BETWEEN '2014-01-01' AND '2014-01-31'
FROM VAT
UNION
SELECT 'February' AS Month, SUM(Amount) AS Amount
WHERE current_time_stamp BETWEEN '2014-02-01' AND '2014-02-29'
FROM VAT
select t.mnth_amt,t.mnth
from (
select sum(amount) as mnth_amt,MONTH(current_time_stamp) as mnth from vat where current_time_stamp BETWEEN '2014-01-01' AND
'2014-12-31' GROUP BY MONTH(current_time_stamp)
) t order by mnth
太棒了。謝謝!! – 2014-09-22 07:20:40