我在使用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')。
答案 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