Добавление другой таблицы

#sql-server #where-clause

#sql-сервер #where-предложение

Вопрос:

Итак, я составил отчет, в котором подсчитано, сколько контрактов финансируется за каждый месяц в течение 2014 года.

Итак, теперь я должен вычислить общее количество для всех контрактов, которые находятся ТОЛЬКО в ОБСЛУЖИВАНИИ.

Я имею в виду, что у меня есть таблица с именем tlkOrigDept. В этой таблице у меня есть это

   Table tlkOrigDept

  orig_dept_id         Orig_Dept_Name
      1                    Sales
      2                   Service
      3                    Famp;I
      4                   Other
      5                   Direct Marketing  
  

Итак, я должен получить все финансируемые контракты ТОЛЬКО от службы, которая является ‘orig_dept_id’ = 2 Так что это мой запрос, но проблема, которую я вижу, заключается в моем предложении where. Потому что, когда я меняю orig_dept_Id на 3, он работает, но не для 2. Он просто показывает пустой, а не сообщение об ошибке.

Пользователь вводит @Begin_date и @End_Date пользователя, чем выбирает компанию, которая является @Program. Пользователь должен видеть ВСЕ ФИНАНСИРУЕМЫЕ контракты за каждый месяц, которые относятся ТОЛЬКО к СЕРВИСУ.

Я либо вижу проблему в операторе SELECT, либо в моем предложении WHERE

Вот мой запрос

 [code="sql"]    

Alter Proc spGetAdminServiceYTD

 (@Begin_Date  DATETIME, 
  @End_Date DATETIME,
  @program int=null) As

 Declare @year int
 Set @year = 2014

 Declare @orig_dept_ID Int
 Set @orig_dept_ID = 2


  Begin


    SELECT  d.name, a.dealer_code, b.last_name, b.city, b.state, b.phone,e.orig_dept_name
        , COUNT(CASE WHEN  MONTH(c.orig_dept_id) = 1 THEN 1 ELSE NULL END) January
        , COUNT(CASE WHEN  MONTH(c.orig_dept_id) = 2 THEN 1 ELSE NULL END) Feburary
        , COUNT(CASE WHEN  MONTH(c.Funded_date) = 3 THEN 1 ELSE NULL END) March
        , COUNT(CASE WHEN  MONTH(c.Funded_date) = 4 THEN 1 ELSE NULL END) April
        , COUNT(CASE WHEN  MONTH(c.Funded_date) = 5 THEN 1 ELSE NULL END) May
        , COUNT(CASE WHEN  MONTH(c.Funded_date) = 6 THEN 1 ELSE NULL END) June
        , COUNT(CASE WHEN  MONTH(c.Funded_date) = 7 THEN 1 ELSE NULL END) July
        , COUNT(CASE WHEN  MONTH(c.Funded_date) = 8 THEN 1 ELSE NULL END) August
        , COUNT(CASE WHEN  MONTH(c.Funded_date) = 9 THEN 1 ELSE NULL END) September
        , COUNT(CASE WHEN  MONTH(c.Funded_date) = 10 THEN 1 ELSE NULL END) October
        , COUNT(CASE WHEN  MONTH(c.Funded_date) = 11 THEN 1 ELSE NULL END) November
        , COUNT(CASE WHEN  MONTH(c.Funded_date) = 12 THEN 1 ELSE NULL END) December
        , count(1) As YTD      




  FROM tdealer a 
         JOIN tContact b ON a.contact_id = b.contact_id 
         JOIN tContract c ON a.dealer_id = c.dealer_id 
         JOIN tCompany d ON c.company_id = d.company 
         JOIN tlkOrigDept E ON c.orig_dept_id = e.orig_dept_id 


  WHERE c.orig_dept_id = 2 
         And d.company_id = @program 
         AND c.Funded_date  amp;>= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-5, 0) 
         And YEAR(c.Funded_date) = @Year 
         And c.Funded_date amp;< DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE())-1, 0) 
         And (c.funded_date) between @Begin_Date And @End_Date 


   GROUP BY
    d.name,
    a.dealer_code,
    b.last_name,
    b.city,
    b.state,
    b.phone,
    MONTH(c.funded_date),
    Month(e.orig_dept_name),
    e.orig_dept_name
      end



    exec spGetAdminServiceYTD '01/01/2014', '05/30/2014', '47'
  

Комментарии:

1. Имеет ли значение (‘F amp; I’) соответствующие строки во всех других таблицах? В противном случае вы не получите строки обратно, поскольку используете внутренние соединения.

2. Что именно означает «он просто показывает пустой»? Есть ли пустой результирующий набор?

3. Для (‘F amp; I’) он показывает результаты, но для 1 компании, когда я ввожу «47» для программы. Если я попытаюсь ввести любую другую программу, я получу пустой набор результатов. И да, Мартин, я имел в виду пустой результирующий набор, когда когда-либо выполняю. Также, если я установлю c.orig_Dept_Id = 2, я получу пустой результирующий набор для всех компаний. Но когда я устанавливаю c.orig_Dept_Id = 3, компания ’47’ работает только по какой-то причине, и никакая другая @program не будет работать. Я пытался разобраться в этом весь день.

4. Предполагается, что данные за январь и февраль должны поступать из идентификатора отдела или с даты финансирования, как и все остальное?

5. О, игнорируйте, что я должен был поставить (c.funded_date) вместо (c.orig_Dept_ID), как и в остальные месяцы.