3

次の表を検討してください

--------------------------------
ID   | ColA    | ColB   | ColC
--------------------------------
1    | ABC     |        |
2    |         | XYZ    |
3    | PQR     |        |
4    | MNO     | PQR    |

ID=1のテーブルの最初の空き列を取得する必要があります。どうすればよいですか。

例えば:

の場合ID = 1、次の空き列はColB
If ID = 2、次の空き列はColA
If ID = 3、次の空き列はColB
If ID = 4、次の空き列はColC

4

4 に答える 4

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
于 2013-02-12T10:42:54.903 に答える
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
于 2013-02-12T10:43:11.500 に答える
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

SQLフィドル

于 2013-02-12T10:46:24.713 に答える
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

サンプルテーブルの場合、クエリを実行すると、次の結果が得られます

ここに画像の説明を入力してください

于 2013-02-12T10:54:36.340 に答える