2014-03-12 32 views
0

该主题似乎令人困惑,就像我对如何解决手头上的问题感到困惑。我有一个数据COALESCE函数,并从支持领域获取数据

testcode1 testdesc1 testcode2 testdesc2 testcode3 testdesc3 
SB00001   CBC   1234-1   CBC Panel NULL   NULL 
NULL   NULL   1234-4   XRAY   NULL   NULL 
SB00002  'Culture B'  1234-2   Blood Cltr 989889   Blood Cnt 

表TESTCODES我有一个查询,让我从这些领域TestCode:

SELECT COALESCE(TestCode1, TestCode2, TestCode3, '') TestCode FROM SOMEORDER 

聚结工作正常,并预期返回数据。但是,我希望结果显示它选择了哪个测试代码。例如:

TestCode 
SB00001 - TestCode1 
1234-4 - TestCode2 
SB00002 - TestCode1 

我可以用COALESCE自己来做吗,还是我需要改变这个查询来使用CASE语句?

+0

我应该都听过我的心脏,我想我应该串联,但不知何故,我一直认为COALESCE适用于整个领域+级联价值。感谢大家的答案。 –

回答

1

它看起来像你想连接字段名称的实际值。你可以做到这一点coalesce()内:

SELECT COALESCE(TestCode1 + ' - TestCode1', 
       TestCode2 + ' - TestCode2', 
       TestCode3 + ' - TestCode3', 
       '' 
       ) TestCode 
FROM SOMEORDER; 

NULL仍将是NULL拼接后的值。

0

我认为你可以做到这一点串联与字段名的字段:

SELECT COALESCE(TestCode1 + ' - TestCode1', TestCode2 + ' - TestCode2', 
    TestCode3 + ' - TestCode3', '') TestCode 
FROM SOMEORDER 
0

试试这个:

SELECT 
COALESCE('T1: '+TestCode1, 'T2: '+TestCode2, ' T3: '+TestCode3, '<none>') TestCode 
FROM SOMEORDER