首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

关于COALESCE取值的有关问题

2012-03-25 
关于COALESCE取值的问题table1field1 field2 field3A1A2nullNULLB2B3C1NULLNULL取得第一个非

关于COALESCE取值的问题
table1
======
field1 field2 field3
======
A1 A2 null
NULL B2 B3
C1 NULL NULL


取得第一个非空值
select COALESCE(field3,field2,field1) first_data from table

以上都没问题

问题是 我想知道 我取得的值对应的 字段名

比如 我取得了第一行倒过来第一个非空值是A2,我想知道他的字段名field2

这个要怎么写?

[解决办法]
那就都用case when 去判断吧!
[解决办法]

SQL code
create table table1(field1 char(4), field2 char(4), field3 char(4))insert into table1select 'A1', 'A2', null union allselect null, 'B2', 'B3' union allselect 'C1', null, null ;with t4 as(select row_number() over(partition by rn order by f desc) fn, t3.rn,t3.f,t3.cfrom(select rn,f,cfrom (select row_number() over(order by getdate()) rn, field1,field2,field3 from table1) t1unpivot(c for f in(field1,field2,field3)) t2) t3)select c value,f fieldfrom t4 where fn=1value  field----- --------A2     field2B3     field3C1     field1 

热点排行