Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Условие выбора  [new]
Pabl0
Member

Откуда:
Сообщений: 265
Подскажите как мне сделать так что бы если T.[Initiator] есть в таблице [IMS].[dbo].[CrmReportUserMaps] C и у него есть доступ к C.ReportID = 28 то брался то в Resived выводился этот же T.[Initiator], а то сейчас меняется и условие которое жирным выделил не срабатывает.


 SELECT DISTINCT T.[Initiator], F.mail, CASE when (S.JobID <> 9 OR S.JobID <> 69) OR (T.[Initiator] <> C.UserID and C.ReportID = 28) then S.MasterID 
when S.MasterID = -1 then HeadID else NULL END AS Resived, F1.Mail AS MailResived
  FROM CrmCreative T 
  INNER JOIN [IMS].[dbo].[ADUsersFull] F 
  on T.[Initiator] = F.ActorID
  INNER JOIN  [IMS].[dbo].[StaffList] S
  ON S.ActorID = F.ActorID
  LEFT JOIN [IMS].[dbo].[CrmReportUserMaps] C
  ON C.UserID = F.UserID AND C.ReportID = 28
  
  LEFT JOIN [IMS].[dbo].[ADUsersFull] F1
  ON F1.ActorID = S.MasterID
  LEFT JOIN [IMS].[dbo].[ADUsersFull] F2
  ON F1.ActorID = S.HeadID
 WHERE T.[Initiator] = 5014000


Сообщение было отредактировано: 29 июн 16, 12:11
29 июн 16, 12:10    [19349296]     Ответить | Цитировать Сообщить модератору
 Re: Условие выбора  [new]
Pabl0
Member

Откуда:
Сообщений: 265
Сделал так, но думаю можно было бы короче.

IF EXISTS(SELECT * FROM [IMS].[dbo].[CrmReportUserMaps] C, CrmCreative T WHERE T.[Initiator] = C.UserID AND T.[Initiator] = 5014000)
BEGIN
	SELECT 1
  SELECT DISTINCT T.[Initiator], F.mail, CASE when (S.JobID <> 9 OR S.JobID <> 69) 
OR (T.[Initiator] <> C.UserID and C.ReportID = 28) then S.MasterID 
when S.MasterID = -1 then HeadID else NULL END AS Resived, F1.Mail AS MailResived
  FROM CrmCreative T 
  INNER JOIN [IMS].[dbo].[ADUsersFull] F 
  on T.[Initiator] = F.ActorID
  INNER JOIN  [IMS].[dbo].[StaffList] S
  ON S.ActorID = F.ActorID
  LEFT JOIN [IMS].[dbo].[CrmReportUserMaps] C
  ON C.UserID = F.UserID AND C.ReportID = 28
  
  LEFT JOIN [IMS].[dbo].[ADUsersFull] F1
  ON F1.ActorID = S.MasterID
  LEFT JOIN [IMS].[dbo].[ADUsersFull] F2
  ON F1.ActorID = S.HeadID
 WHERE T.[Initiator] = 5014000	
END 

ELSE
	BEGIN
	  SELECT 2
	  SELECT DISTINCT T.[Initiator], F.mail, F.Mail AS MailResived
	  FROM CrmCreative T 
	  INNER JOIN [IMS].[dbo].[ADUsersFull] F 
	  on T.[Initiator] = F.ActorID
	  INNER JOIN  [IMS].[dbo].[StaffList] S
	  ON S.ActorID = F.ActorID
	  LEFT JOIN [IMS].[dbo].[CrmReportUserMaps] C
	  ON C.UserID = F.UserID AND C.ReportID = 28
	 WHERE T.[Initiator] = 5014000
	END


Сообщение было отредактировано: 29 июн 16, 12:34
29 июн 16, 12:21    [19349365]     Ответить | Цитировать Сообщить модератору
 Re: Условие выбора  [new]
Pabl0
Member

Откуда:
Сообщений: 265
Нет, не правильно, так нельзя ... :(
29 июн 16, 12:48    [19349478]     Ответить | Цитировать Сообщить модератору
 Re: Условие выбора  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8821
Pabl0,

C.UserID, C.ReportID может быть NULL, а Вы пишете неравенство.
29 июн 16, 13:15    [19349595]     Ответить | Цитировать Сообщить модератору
 Re: Условие выбора  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Владислав Колосов
Pabl0,

C.UserID, C.ReportID может быть NULL, а Вы пишете неравенство.
Всего лишь для NULL не подойдёт T.[Initiator] или 28 и не отработает соответствующий THEN.
Разве не это нужно?
29 июн 16, 13:25    [19349651]     Ответить | Цитировать Сообщить модератору
 Re: Условие выбора  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8821
iap,

я вот не понял - чего автор хочет.
29 июн 16, 13:43    [19349754]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить