如何编写条件嵌套子查询

时间:2015-01-13 14:27:44

标签: sql

我目前使用下面的SQL语句来检查数据库中的记录,字段conWkActual,conWkPlanned和conWkBaseline是日期值。字段conWkBaseline始终具有值,而其他两个可能为NULL。但是,如果conWkPlanned有一个值,它比conWkBaseline更相关,如果conWkActual有一个值,那么它反过来比conWkPlanned更相关。我想知道的是我可以有一个嵌套子查询,它只输出最相关的日期而不是全部三个。例如,如果所有三个都有值,则确定conWkActual是否具有值,然后仅输出该值

SELECT C.conContractID, C.conWkActual, C.conWkPlanned, C.conWkBaseline, C.conService,  
C.conCapRev, C.conContractType, C.conSection, C.conContractStatus FROM Contracts C
WHERE ConContractStatus = 'Cancelled';

1 个答案:

答案 0 :(得分:1)

我假设您需要来自conWkActual,conWkPlanned和conWkBaseline的最相关日期字段(如果它们不为空)。如果是那样的话 如果您需要获取最相关的日期字段

的Not NULL值,COALESCE将完成此任务
  SELECT C.conContractID, COALESCE(C.conWkActual, C.conWkPlanned, C.conWkBaseline) AS 'YourDatecolumn', C.conService,  C.conCapRev, C.conContractType, C.conSection, C.conContractStatus 
  FROM Contracts C
  WHERE ConContractStatus = 'Cancelled';

以下是有关COALESCE http://msdn.microsoft.com/en-us/library/ms190349.aspx

的更多说明的链接