考虑下表

--------------------------------
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

最佳答案

如果您想要列的名称,您可以执行以下操作:

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

关于mysql - 如何获取空表的列名?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14830487/

10-11 03:39
查看更多