我有三个表Pproject,ProjectMilestone和ReleaseSchedule。
我想将一个派生字段添加到名为EndDate的项目表中。
这个名为EndDate的新字段的值应该是ProjectMilestone.EndDate和ReleaseSchedule.EndDate这两个值中较大的一个。
在这两个表中获取EndDate的两个数据点的SQL逻辑是这样的:
从ProjectMilestone中选择EndDate 其中MilestoneCID = 77 和projectId = project.projectId
从ReleaseSchedule中选择EndDate 其中MilestoneCID = 77 releaseId = project.releaseId
所以我基本上需要派生字段是这两个值中较大的一个,如果这两个值都没有'N / A'
我正是在这一点上试图让案例陈述起作用......
ALTER TABLE项目 添加EndDate AS(ProjectMilestone.EndDate< ReleaseSchedule.EndDate THEN ProjectMilestone.EndDate ELSE ReleaseSchedule.EndDate END)
如果两者都为空,我如何获得N / A?
感谢所有
答案 0 :(得分:2)
这可能会在您的客户端应用程序中更好地处理,但您可以在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,然后指定日期样式以获得更漂亮的日期。