2013-12-18 3 views
0

Im работающих на сообщениях с помощью SSRS 2008SQL Count On даты

У меня есть код, который возвращает 2 колонки DateAppRcvd и советник

Вот мой код ниже:

SELECT 
     COUNT(pm.DateAppRcvd) AS [DateAppRcvd], 
    u.FullName AS [Advisor] 
FROM tbl_Profile_Mortgage AS pm 
     INNER JOIN tbl_Profile AS p 
      ON pm.FK_ProfileId = p.Id 
     INNER JOIN tbl_User u 
      ON p.Advisor = u.UserId 
WHERE DateAppRcvd Between '01-Nov-2013 00:00:00.000' AND '30-Nov-2013 23:59:00.000' 
AND pm.AccelInd <>'1' 
and u.FullName in ('Colin Sneddon ','Graeme Hastie','Jonathon Bede Pratt','Mark Reidy','Neil Jones','Nigel Crook','Sharon Parouty','Tom McSherry') 
GROUP BY u.FullName 

Это Принеси назад

DateAppRcvd Advisor 
11   Colin Sneddon 
1   Jonathon Bede Pratt 
17   Mark Reidy 
4   Neil Jones 
5   Nigel Crook 
14   Sharon Parouty 
8   Tom McSherry 

Как всегда оставлять Грэм. Я знаю, почему это делается, поскольку для этого пользователя нет даты/количества.

Есть ли способ, чтобы установить его, чтобы вернуть Грэм с отсчетом от 0 в DateAppRcvd

+0

Пожалуйста, дайте нам пример ввода. – PeterRing

ответ

0

Если предположить, что в случае Грэма в столбец DateAppRcvd является NULL, то это должно помочь:


SELECT 
    COUNT(pm.DateAppRcvd) AS [DateAppRcvd], 
    u.FullName AS [Advisor] 
FROM 
    tbl_Profile_Mortgage AS pm 
    INNER JOIN tbl_Profile AS p ON pm.FK_ProfileId = p.Id 
    INNER JOIN tbl_User u ON p.Advisor = u.UserId 
WHERE 
    (
     DateAppRcvd Between '01-Nov-2013 00:00:00.000' AND '30-Nov-2013 23:59:00.000' 
     OR 
     DateAppRcvd IS NULL 
    ) 
    AND pm.AccelInd '1' 
    and u.FullName in ('Colin Sneddon ','Graeme Hastie','Jonathon Bede Pratt','Mark Reidy','Neil Jones','Nigel Crook','Sharon Parouty','Tom McSherry') 
GROUP BY u.FullName 
+0

Это отлично поработало, и вы так много потратили время, чтобы ответить на мой вопрос. – RustyHamster

0

Если У Graeme нет записи в tbl_Profile_Mortgage, тогда вам нужно переместить соединения и использовать внешнее соединение (между профилем morgage и таблицей сотрудников), чтобы отобразить нули. После появления нулей это приведет к подсчету записей в функции агрегации.

SELECT 
     COUNT(pm.DateAppRcvd) AS [DateAppRcvd], 
    u.FullName AS [Advisor] 
FROM tbl_User u 
     INNER JOIN tbl_Profile AS p 
      ON p.Advisor = u.UserId 
     LEFT OUTER JOIN tbl_Profile_Mortgage AS pm 
      ON pm.FK_ProfileId = p.Id 
WHERE DateAppRcvd Between '01-Nov-2013 00:00:00.000' AND '30-Nov-2013 23:59:00.000' 
AND pm.AccelInd <>'1' 
and u.FullName in ('Colin Sneddon ','Graeme Hastie','Jonathon Bede Pratt','Mark Reidy','Neil Jones','Nigel Crook','Sharon Parouty','Tom McSherry') 
GROUP BY u.FullName