SQL将字段统一到一个结果

时间:2010-12-27 15:38:01

标签: sql-server

我知道这是“不是内置”或“dba思考的方式”,而是一种程序员方法,如何从3个字段请求获取非空的,进入结果字段。

假设我们有一张f1,f2,f3,f4,f5.

的表格

假设f2,f3,f4是同一类型。

假设表的内容是

的元组
(key1,null,null,value1,value2)
(key2,null,value3,value4,value5)
(key3,null,null,null,value6)

现在如果我们返回第一个元组,那么我们得到(key1)得到(key1,value1,value2)

如果我们要求key2,我们会得到(key1,value3,value5)

如果我们要求key3,我们会获得(key1,null,value6)

如果你在f2中有值,那么如何获得优先级的字段,然后将其设置到返回的字段中,只有当我们在f3中有值然后将其设置到中间返回字段时,才有可能获得优先级,我们在f4中有值,然后将其设置到中间返回的字段

主要目标是将结果放入单个字段,并防止结果所需的开销工作。

2 个答案:

答案 0 :(得分:4)

正如Bernd_k所说,COALESCE是你的朋友

SELECT [key], COALESCE(f2, f3, f4), f5
FROM YourTable

答案 1 :(得分:2)

Select IsNull(IsNull(f1, f2), f3))