请考虑以下表格
--------------------------------
ID | ColA | ColB | ColC
--------------------------------
1 | ABC | |
2 | | XYZ |
3 | PQR | |
4 | MNO | PQR |
我需要获得表格的第一个免费列,其中ID = 1.我该怎么做
例如:
如果ID = 1
,则下一个免费栏为ColB
如果ID = 2
,则下一个免费列为ColA
如果ID = 3
,则下一个免费列为ColB
如果ID = 4
,则下一个免费列为ColC
答案 0 :(得分:1)
sql-server
; (如果你想考虑空字符串(''
),那么也要使用nullif(colName,'') is null)
)
Select Id, case when colA is null then 'colA'
when colB is null then 'colB'
when colC is null then 'colC'
...
end freeCol
from yourTable
答案 1 :(得分:1)
如果您想要列的名称,您可以执行以下操作:
SQL> select id, cola, colb, colc,
2 coalesce(nvl2(cola, '', 'COLA'),
nvl2(colb, '', 'COLB'),
nvl2(colc, '', 'COLC')) first_free_col
3 from tab;
ID COL COL COL FIRST_FREE_COL
---------- --- --- --- --------------------------------
1 ABC COLB
2 XYZ COLA
3 PQR COLB
4 MNO PQR COLC
或案例
SQL> select id, cola, colb, colc,
2 case when cola is null then 'COLA'
3 when colb is null then 'COLB'
4 when colc is null then 'COLC'
5 end first_free_col
6 from tab;
ID COL COL COL FIRST_FREE_COL
---------- --- --- --- --------------------------------
1 ABC COLB
2 XYZ COLA
3 PQR COLB
4 MNO PQR COLC
答案 2 :(得分:1)
试试这个:
select case
when ColA is not null then 'ColA'
when ColB is not null then 'ColB'
when ColC is not null then 'ColC'
End FirstCol
from test
答案 3 :(得分:1)
你可以在mysql中使用以下查询
select ID,if(colA is null,'colA',(if(colB is null,'colB',
(if(colC is null,'colC','no column is null'))))) as Result from your_table_name
对于您的示例表,如果您执行我的查询,您将获得以下结果