2016-03-07 22 views
2

分別獲得行每個月我有一個表如下如何在mysql中

CREATE TABLE IF NOT EXISTS `titas_clp_invoice_master` (
    `id` int(255) NOT NULL AUTO_INCREMENT, 
    `customer_id` bigint(20) NOT NULL, 
    `store_id` bigint(20) NOT NULL, 
    `invoice_no` varchar(255) NOT NULL, 
    `invoice_date` date NOT NULL, 
    `amount` bigint(255) NOT NULL, 
    `product_name` varchar(255) NOT NULL, 
    `isdeleted` varchar(1) NOT NULL, 
    `invoice_month` varchar(255) NOT NULL, 
    `invoice_year` varchar(255) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=20 ; 

現在,我想是這樣的

爲今年各月分別合計交易。就像2015年12月份的1筆交易,2016年1月份的2筆交易,2016年2月份的3筆交易等。

+0

你還試過了什麼。顯示你的查詢? – Deep

+0

這是領先的日期字段? – mitkosoft

+0

'GROUP BY'會有所幫助。 –

回答

1

MySQL的開發人員花了相當長的時間來開發出好的date functions - 您應該使用它們。 invoice_yearinvoice_month都不需要,因爲您已經有invoice_date作爲date格式的列。你可以使用

SELECT invoice_date, count(*) 
FROM titas_clp_invoice_master 
GROUP BY YEAR(invoice_date), MONTH(invoice_date) 
+0

兩次演員比使用兩列更廣泛,我不明白這個答案是如何得到upvote當它顯示DATE - COUNT時,他要求另一件事。 – sagi

+0

@sagi - 最有可能的原因是它的正確使用和日期使用varchar列是不好的做法... – baao