Chào mọi người, em có 1 table CUONSACH như sau:
CREATE TABLE CUONSACH
(
MASACH INT PRIMARY KEY,
NGAYNHAP DATETIME DEFAULT GETDATE(),
TINHTRANG INT,
VITRI INT,
MAGAYSACH INT FOREIGN KEY REFERENCES GAYSACH(MAGAYSACH) ON DELETE CASCADE ON UPDATE CASCADE
)
và có dữ liệu mẫu sau:
INSERT CUONSACH VALUES ( 90,'22/8/2010',1,1,1);
INSERT CUONSACH VALUES ( 91,'22/8/2011',1,1,1);
INSERT CUONSACH VALUES ( 92,'22/8/2012',1,1,1);
INSERT CUONSACH VALUES ( 93,'22/8/2015',1,1,1);
INSERT CUONSACH VALUES ( 94,'22/8/2010',1,1,1);
INSERT CUONSACH VALUES ( 95,'22/8/2011',1,1,1);
INSERT CUONSACH VALUES ( 96,'22/8/2012',1,1,1);
INSERT CUONSACH VALUES ( 97,'22/8/2015',1,1,1);
Điều em muốn là SELECT để tìm ra tổng sách tính từ thời điểm bắt đầu nhập đến thời điểm năm đó(theo từng năm). Em đã cố gắng Group By:
SELECT YEAR(NGAYNHAP), COUNT(CUONSACH.MASACH)
FROM CUONSACH, GAYSACH
WHERE CUONSACH.MAGAYSACH =GAYSACH.MAGAYSACH AND YEAR(NGAYNHAP)<= YEAR(CAST(CURRENT_TIMESTAMP AS DATE))
GROUP BY YEAR(NGAYNHAP)
nhưng kết quả đạt được là lượng sách được nhập theo từng năm.
2010 2
2011 2
2012 2
2015 2
Nhưng kết quả mà em muốn là tìm ra tổng sách tính từ thời điểm bắt đầu nhập đến thời điểm năm đó(theo từng năm):
2010 2
2011 4
2012 6
2015 8
Nhờ mọi người giúp đỡ, em cảm ơn nhiều ạ!
Câu truy vấn trên đúng rồi mà bạn, dữ liệu mẫu đang là 8 row, và mỗi năm 2 row. Nên kết quả ra z là đúng rồi còn j.
Cập nhật đáp án:
Khi bạn đã GROUP BY theo năm như vậy thì nó chỉ xét trong năm đó thôi chứ có xét được ra năm ngoài đâu :) Bạn nên dùng cách khác để viết câu truy vấn cho mục đích đó ! Mình nghĩ nên dùng con trỏ :D Chúc bạn làm lại may mắn :))