2016-10-11 5 views
0

Я пытаюсь выработать AmountRequested для всех заполненных дел за этот месяц. I'am использованием SQL 2008Сумма, если дата существует в этом месяце

Если есть дата в колонке DateCompleted для этого месяца, то дайте мне сумму AmountRequested для этих столбцов Вот мой код, он продолжает падать более чем говорить «тип Операнд столкновение: дата несовместимо с междунарами»

SUM(case WHEN CONVERT(DATE,pm.DateCompleted,103) 
= MONTH(GETDATE()) AND YEAR(pm.DateCompleted) = YEAR(GETDATE()) 
    THEN pm.AmountRequested 
     ELSE 0 end) AS [LoanAmount] 

ответ

2
CONVERT(DATE,pm.DateCompleted,103) = MONTH(GETDATE()) 

Здесь вы пытаетесь сравнить date с integer так погрешностью.

Ex. CONVERT(DATE,pm.DateCompleted,103) может вернуться '2016-10-11' и MONTH(GETDATE()) вернется 10. Вы пытаетесь приравнять '2016-10-11' = 10 поэтому ошибка генерируется

Почему бы не использовать ту же самую функцию MONTH для столбца также

Sum(CASE 
     WHEN Month(pm.DateCompleted) = Month(Getdate()) 
      AND Year(pm.DateCompleted) = Year(Getdate()) THEN pm.AmountRequested 
     ELSE 0 
    END) AS [LoanAmount] 
+0

Совершенных благодаря ППРРУ Так новообращенному была причиной проблемы. – RustyHamster

+0

@RustyHamster Да, вы пытаетесь сравнить 'date' с' integer', что является реальной проблемой. Ex. 'CONVERT (DATE, pm.DateCompleted, 103)' может возвращать ''2016-10-11'' и' MONTH (GETDATE()) 'будет возвращать' 10' Вы пытаетесь приравнять '' 2016-10-11 '= Поэтому ошибка генерируется –

+0

Спасибо, что объяснили, что она имеет смысл. – RustyHamster

Смежные вопросы