我有一个设置层次结构,每个人都有默认设置,可以被组或单个用户覆盖,用于特定屏幕等......
这些存储在一个带有 Hirarchy-ID 的表中以进行排序,如下所示:
HIERARCHY | SETTING | OPTION | PREFERENCE | COLOR |
----------+---------+--------+------------+-------+
100 | NULL | 1 | NULL | NULL |
10 | NULL | 2 | square | |
1 | 0 | 3 | rounded | green |
我追求的结果是每一列的第一个非空值(如果我也可以压缩一个 NULLIF(COLOR, '') 那就太好了)。在此示例中,结果将是:
SETTING | OPTION | PREFERENCE | COLOR |
--------+--------+------------+-------+
0 | 1 | square | green |
目前我正在对每一列进行单独的查询,但我希望这可以以更优雅的方式实现?
我正在使用 MS SQL Server(并且需要支持 2005 版)。
小提琴