2010-05-24 41 views
9

Tôi có cơ sở dữ liệu SQLite chứa giao dịch, mỗi người trong số họ có giátransDate.Nhóm theo tháng trong SQLite

Tôi muốn truy xuất tổng giao dịch được nhóm theo tháng. Các hồ sơ lấy ra nên như sau:

Price month 
230  2 
500  3 
400  4 
+0

các cột của bảng là gì? – Mark

Trả lời

20

nó luôn luôn là tốt, trong khi bạn nhóm bởi THÁNG nó nên kiểm tra NĂM cũng

select SUM(transaction) as Price, 
     DATE_FORMAT(transDate, "%m-%Y") as 'month-year' 
     from transaction group by DATE_FORMAT(transDate, "%m-%Y"); 

cho SQLite

select SUM(transaction) as Price, 
     strftime("%m-%Y", transDate) as 'month-year' 
     from transaction group by strftime("%m-%Y", transDate); 
+0

+1 cho phần năm, tôi đã không xác định nó trong giải pháp của tôi. – newtover

+0

"không có chức năng như vậy: date_format" – Andomar

+0

Nếu bạn đang sử dụng android có lẽ điều này sẽ hữu ích strftime ('% m-% Y', transDate, 'unixepoch') – dwbrito

1

Bạn có thể nhóm vào đầu tháng:

select date(DateColumn, 'start of month') 
,  sum(TransactionValueColumn) 
from YourTable 
group by 
     date(DateColumn, 'start of month') 
1

Hãy thử như sau:

SELECT SUM(price), strftime('%m', transDate) as month 
FROM your_table 
GROUP BY strftime('%m', transDate); 

Sử dụng corresponding page trong tài liệu SQLite để tham khảo trong tương lai.

2
SELECT 
    SUM(Price) as Price, strftime('%m', myDateCol) as Month 
FROM 
    myTable 
GROUP BY 
    strftime('%m', myDateCol) 
+0

Hoạt động, nhưng có khả năng tổng giá trị của tháng 3 năm 2009 với tháng 3 năm 2010 cho tháng 3 – Andomar

Các vấn đề liên quan