Làm sao để lấy được giá trị của 2 năm nay và trước trong sql

Chào mọi người,
Em đang muốn chuyển nguyên đoạn này về thành một câu select

DECLARE @CURRER DECIMAL,  @PREVER DECIMAL		
SET @CURRER = (SELECT ISNULL(SUM(ExpectedRevenue),0) FROM dbo.CAMPAIGNS
		WHERE YEAR(CrtdDate) = 2015  AND MONTH(CrtdDate) = 11)
SET @PREVER = (SELECT ISNULL(SUM(ExpectedRevenue),0) FROM dbo.CAMPAIGNS
		WHERE YEAR(CrtdDate) = 2016  AND MONTH(CrtdDate) = 11)
		
SELECT 11 AS MONTHS, @CURRER ,@PREVER

Và đây là đoạn em chuyển về thành 1 câu select

SELECT 11 AS MONTHS, ISNULL(SUM(A.ExpectedRevenue),0) AS CURRER,ISNULL(SUM(B.ExpectedRevenue),0 )AS PREVER
FROM dbo.CAMPAIGNS A , dbo.CAMPAIGNS B
		WHERE YEAR(A.CrtdDate) = 2015  AND MONTH(A.CrtdDate) = 11 AND YEAR(B.CrtdDate) = 2016 

Sở dĩ em muốn chuyển thành một câu như vậy là để em union all cho 12 tháng ạ

Mọi người giúp em với, em sai ở chỗ nào ạ ?

bảng dữ liệu được thiết kế thế nào?

Gửi lên tên bảng và các thuộc tính nữa.

Dạ, đây là table dữ liệu và thuộc tính ạ. Anh giúp em với! Không biết cú pháp có sai ở chỗ nào ko nữa mà nó lại ra kết quả khác nhau ạ

Anh @ltd em làm được rồi ạ !

SELECT 11 AS MONTHS,SUM(CASE WHEN (YEAR(CrtdDate) = 2016 - 1) AND (MONTH(CrtdDate) = 11) THEN ExpectedRevenue ELSE 0 END) AS CURRER,
SUM(CASE WHEN (YEAR(CrtdDate) = 2016) AND (MONTH(CrtdDate) = 11) THEN ExpectedRevenue ELSE 0 END) AS PREVER
FROM dbo.CAMPAIGNS

Đây là thành quả ạ

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?