2016-10-06 1 views
1

Предположим, у нас есть две таблицы A и B. Обе таблицы имеют From даты .i.e. A.FromDate и B.FromDate, и оба могут быть соединены на MemberID. Мне нужно, чтобы вытащить список членов из таблицы с следующим условием на From DateКак получить код, основанный на том или ином условии в SQL Server

FromDate должен быть рассчитан:

  • Если A.FromDate меньше B.FromDate, используйте B.FromDate
  • Если A.FromDate равно или больше чем текущий диапазон групп B.FromDate, используйте диапазон приемлемости A.FromDate
  • Если даты не могут быть определены, член должен быть включен в список исключений.

Пожалуйста, помогите

ответ

1

Попробуйте этот запрос:

SELECT A.*, B.*, 
     CASE WHEN A.FromDate < B.FromDate THEN CAST(B.FromDate AS VARCHAR(15)) 
      WHEN A.FromDate >= B.FromDate THEN CAST(A.FromDate AS VARCHAR(15)) 
      ELSE 'Exception' END AS FromDate 
FROM A 
INNER JOIN B 
    ON A.MemberID = B.MemberID 

Условие ELSE бы только огонь, когда неравенство между датами не может быть определено, что будет происходить, когда один или оба из дат be NULL.