Производное поле SQL Server 2005 с логикой - PullRequest
1 голос
/ 07 октября 2010

у меня есть три таблицы Pproject, ProjectMilestone и ReleaseSchedule.

Я хочу добавить производное поле в таблицу проекта с именем EndDate.

значение этого нового поля с именем EndDate должно быть больше двух значений ProjectMilestone.EndDate и ReleaseSchedule.EndDate.

логика SQL для получения двух точек данных EndDate в обеих этих таблицах выглядит следующим образом:

выберите EndDate из ProjectMilestone где MilestoneCID = 77 и projectId = project.projectId

выберите EndDate из ReleaseSchedule где MilestoneCID = 77 releaseId = project.releaseId

поэтому мне нужно, чтобы производное поле было больше из этих двух значений, и если ни одно из этих значений не имеет значения 'N / A'

Я сейчас пытаюсь заставить заявление case работать ...

Проект ALTER TABLE ДОБАВИТЬ EndDate AS (СЛУЧАЙ КОГДА ProjectMilestone.EndDate

как получить N / A, если оба значения равны нулю?

спасибо всем

1 Ответ

2 голосов
/ 07 октября 2010

Это такая вещь, которая, вероятно, будет лучше обрабатываться в вашем клиентском приложении, но вы можете сделать это в T-SQL, как показано ниже.

Все выходные данные из оператора CASE должны быть одинаковымитип данных, поэтому вам нужно привести даты к типу char или varchar.

ALTER TABLE Project 
ADD EndDate AS 
ISNULL((CASE 
  WHEN ProjectMilestone.EndDate < ReleaseSchedule.EndDate 
    THEN CAST(ProjectMilestone.EndDate AS VARCHAR(50))
  ELSE 
    CAST(ReleaseSchedule.EndDate AS VARCHAR(50)) 
  END), 'N/A')

В качестве альтернативы вы можете использовать CONVERT вместо CAST, а затем указать стиль даты для получения более красивых дат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...