Сравните дату из другой таблицы - PullRequest
0 голосов
/ 27 февраля 2011

Использование SQL Sever 2005

Table1

ID StartDate EndDate

001 02/23/2010 07/22/2010
002 05/03/2010 null
003 02/02/2011 null
...

Table2

Дата

02/24/2011
02/25/2011
...
...

Условие

  • Если enddate не равно нулю, тогда startDate сравните с max (датой) из таблицы2, если начальная дата> 6 месяцев, тогда он должен отображаться как «Истек»

Как сделать запрос длявышеуказанное условие.

Требуется справка.

Ответы [ 3 ]

2 голосов
/ 27 февраля 2011
Select 
  StartDate,
  [Status]=Case  
        when DATEDIFF(m,StartDate,(Select MAX(Date) from Table2))>6
        then 'Expired' 
        Else 'Valid'
        end

  From Table1
  where EndDate is not null
0 голосов
/ 27 февраля 2011

Вопрос не полный

  1. Если конечная дата не равна нулю, тогда startDate сравнивают с max (датой) из таблицы2
    • как сравнить?лучше чем?меньше, чем?равно?
  2. если начальная дата> 6 месяцев, то она должна отображаться как «Истек срок действия»

Но давайте предположим, что вы имеете в виду

  1. Если конечная дата не равна нулю, тогда startDate сравнивается с max (датой) из таблицы2
    • , если срок действия истек, если enddate < max(date)
  2. в противном случае если начальная дата старше 6 месяцев, то она должна отображаться как «Истек срок действия»

Тогда запрос становится

select
  case when EndDate < MaxDate then 'Expired'
       when EndDate is null and StartDate < DateAdd(m,-6,GetDate()) then 'Expired'
       else 'OK'
  end
from Table1 T1
cross join (select max(date) MaxDate from Table2) T2
0 голосов
/ 27 февраля 2011
Select Case
        When EndDate Is Not Null Then EndDate
        When Table1.StartDate > DateAdd(mm, 6, T2.MaxDate) Then 'Expired'
        End
From Table1
    Cross Join  (
                Select Max( [Date] ) As MaxDate
                From Table2
                ) As T2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...