2010-10-07 7 views
1

J'ai trois tables Pproject, ProjectMilestone et ReleaseSchedule.Champ dérivé SQL Server 2005 avec logique

Je souhaite ajouter un champ dérivé à la table de projet appelée EndDate.

La valeur de ce nouveau champ appelé EndDate doit être la plus grande des deux valeurs ProjectMilestone.EndDate et ReleaseSchedule.EndDate.

la logique SQL pour obtenir les deux points de données de EndDate au sein de ces deux tableaux est comme ceci:

select EndDate de ProjectMilestone où MilestoneCID = 77 et projectId = project.projectId

select EndDate de ReleaseSchedule où MilestoneCID = 77 releaseId = project.releaseId

donc j'ai besoin fondamentalement le champ dérivé d'être la plus grande de ces 2 valeurs et si aucune valeur existe pour avoir 'N/A'

je suis à ce point essayer d'obtenir la déclaration de cas au travail ...

ALTER TABLE projet ADD EndDate AS (CAS QUAND ProjectMilestone.EndDate < ReleaseSchedule.EndDate ALORS ProjectMilestone.EndDate ELSE ReleaseSchedule.EndDate END)

Comment puis-je obtenir N/A si les deux sont NULL?

remercie tous

Répondre

2

C'est le genre de chose qui serait probablement mieux gérée dans votre application cliente, mais vous pouvez le faire dans T-SQL comme ci-dessous.

Toutes les sorties de l'instruction CASE doivent être du même type de données, de sorte que vous devez convertir les dates en char ou en varchar. Alternativement, vous pouvez utiliser CONVERT au lieu de CAST, puis spécifier un style de date pour obtenir des dates plus jolies.