COALESCE功能并从支持字段获取数据

时间:2014-03-12 20:30:35

标签: sql sql-server-2008 coalesce

主题似乎令人困惑,就像我对如何解决手头的问题感到困惑。我有一个带有数据的表TESTCODES

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

我有一个查询从这些字段中获取TestCode:

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

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

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

我可以使用COALESCE本身或者我需要更改此查询以使用CASE语句吗?

3 个答案:

答案 0 :(得分:1)

看起来您想要将字段名称连接到实际值。您可以在coalesce()

中执行此操作
SELECT COALESCE(TestCode1 + ' - TestCode1',
                TestCode2 + ' - TestCode2',
                TestCode3 + ' - TestCode3',
                ''
               ) TestCode
FROM SOMEORDER;

连接后NULL的值仍为NULL

答案 1 :(得分:0)

我认为您可以将字段与字段名称连接起来:

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

答案 2 :(得分:0)

试试这个:

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