创建覆盖NULL值的View表

时间:2014-02-07 10:02:08

标签: sql sql-server view request

我在使用SQL Server 2008创建视图时遇到问题。我有几个看起来像这样的表:

父表

+----+------+
| id | date |
+----+------+
| 1  | 2010 |
+----+------+

子表

+----+------+-----------+
| id | date | ParentID  |
+----+------+-----------+
| 1  | NULL |         1 |
| 2  | 2011 |         1 |
+----+------+-----------+

我想要实现的是一个看起来像这样的视图(基于前两个例子):

子表自定义视图

+----+------+----------+
| id | date | ParentID |
+----+------+----------+
|  1 | 2010 |        1 |
|  2 | 2011 |        1 |
+----+------+----------+

基本上,Child表有一些字段,当它的值为NULL时,它应该从其Parent继承'(Child表的第一行:'2010'被检索)。 否则,它应该只显示其值(Child表的第二行:'2011')。

2 个答案:

答案 0 :(得分:1)

使用coalesce。你可以拥有任意数量的参数。它返回第一个非null。当所有这些都为null时,它返回null

select c.[id],
       coalesce(c.[date], p.[date]) [date],
       c.parentid
  from child c
  join parent p
    on p.[id] = c.parentid

答案 1 :(得分:0)

在SELECT

中使用IsNull函数
SELECT Child.Id,
       IsNull(Child.Date, Parent.Date),
       ParentId
  FROM Child 
  JOIN Parent ON Parent.Id = Child.ParentId