2015-08-31 3 views
-5
SELECT 
    DAY(table_A.PaymentDate) as date1 , 
    (CASE 
     WHEN MONTH(table_A.PaymentDate) = MONTH(CURRENT_TIMESTAMP) 
      THEN CAST(SUM(table_A.Total_Amount) As INT) 
      ELSE 0 
    END) AS This_month_CNT, 
    (CASE 
     WHEN MONTH(table_A.PaymentDate) = MONTH(CURRENT_TIMESTAMP) - 1 
      THEN CAST(SUM(table_A.Total_Amount) AS INT) 
     ELSE 0 
    END) AS last_month_CNT 
FROM 
    Tbl_Pan_Paymentdetails table_A 
FULL OUTER JOIN 
    Tbl_Pan_Paymentdetails table_B ON table_A.PaymentDate = table_B.PaymentDate 
WHERE 
    YEAR(table_A.PaymentDate) = YEAR(CURRENT_TIMESTAMP) 
    AND table_A.PaymentDate >= DATEADD(MONTH, -2, GETDATE()) 
GROUP BY 
    DAY(table_A.PaymentDate), 
    MONTH(table_A.PaymentDate) 
ORDER BY 
    DAY(table_A.PaymentDate) ; 
+4

Я думаю, что ваш вопрос нуждается в более подробном объяснении того, что вы пытаетесь сделать. –

+1

Итак, каков ваш вопрос и в чем проблема, с которой вы столкнулись? – MusicLovingIndianGirl

+0

Когда вы говорите «последние два месяца», вы имеете в виду последние два месяца с сегодняшнего дня (т. Е. Если сегодня было 15 августа 2015 года, вы ищете 15 июня - 15 августа 2015 года)? Или вы имеете в виду последние два полных месяца (1 июня - 31 июля 2015 года)? Потому что в вашем запросе есть некоторая путаница в границах месяца/года, что затрудняет определение того, чего вы пытаетесь достичь. –

ответ

1

Не уверен, что я полностью понимаю.

WHERE YEAR(table_A.PaymentDate) = YEAR(CURRENT_TIMESTAMP) AND 
     table_A.PaymentDate >= DATEADD(MONTH, -2, GETDATE()) 

Здесь вы (1) сравнение Год элементы вашей даты платежа с CURRENT_TIMESTAMP, и (2) убедившись, что дата выплаты больше, чем за последние 2 месяца на основании GETDATE()?

Не знаете, почему вы используете как CURRENT_TIMESTAMP, так и GETDATE(). В любом случае, я думаю, что вторая часть этого оператора WHERE делает то, что вы хотите.

Если текущая дата 31 января 2015 года, ваша логика в настоящий момент не вернет никаких записей с декабря 2014 года. Первая часть вашего оператора where отфильтровывает их. Если вы действительно хотите последние 2 месяца, удалите из инструкции WHERE

YEAR(table_A.PaymentDate) = YEAR(CURRENT_TIMESTAMP) AND 
Смежные вопросы