tổng profit tháng này với tháng trước đó với thời điểm tháng được xác định theo cột order_date , nếu em muốn lấy dữ liệu như này thì làm như nào ạ? em viết mãi không được ạ
Chào bạn, bạn có thể thực hiện như sau:
Đầu tiên tính lợi nhuận tháng trước, tháng này rồi so sánh.
Ví dụ, data của bạn có các trường:
Code SQL tính lợi nhuận tháng trước:
SELECT SUM(revenue - cost) AS profit
FROM sales
WHERE date >= DATEADD(month, DATEDIFF(month, 0, GETDATE())-1, 0)
AND date < DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0)
Code SQL tính lợi nhuận tháng này:
SELECT SUM(revenue - cost) AS profit_this_month
FROM sales
WHERE YEAR(date) = YEAR(GETDATE()) AND MONTH(date) = MONTH(GETDATE())
Còn muốn tạo ra bảng tính so sánh luôn lợi nhuận tháng trước/tháng này, bạn có thể dùng code như sau:
SELECT
SUM(CASE WHEN YEAR(date) = YEAR(GETDATE()) AND MONTH(date) = MONTH(GETDATE())
THEN revenue - cost ELSE 0 END) AS profit_this_month,
SUM(CASE WHEN YEAR(date) = YEAR(DATEADD(month, -1, GETDATE())) AND MONTH(date) = MONTH(DATEADD(month, -1, GETDATE()))
THEN revenue - cost ELSE 0 END) AS profit_last_month,
SUM(CASE WHEN YEAR(date) = YEAR(GETDATE()) AND MONTH(date) = MONTH(GETDATE())
THEN revenue - cost ELSE 0 END) -
SUM(CASE WHEN YEAR(date) = YEAR(DATEADD(month, -1, GETDATE())) AND MONTH(date) = MONTH(DATEADD(month, -1, GETDATE()))
THEN revenue - cost ELSE 0 END) AS profit_change
FROM sales
Giải thích:
Dạ, em cảm ơn thầy rất nhiều ạ