1

以下のsql文を使用して、テーブルのフィールドから最後に塗りつぶした列を取得しますが、動作させません。結果として最後に塗りつぶした列の値を取得するSQL文

select 
    iif(isnull(AppBy11,true), 
    iif(isnull(AppBy10,true), 
    iif(isnull(AppBy9,true), 
    iif(isnull(AppBy8,true), 
    iif(isnull(AppBy7,true), 
    iif(isnull(AppBy6,true), 
    iif(isnull(AppBy5,true), 
    iif(isnull(AppBy4,true), 
    iif(isnull(AppBy3,true), 
    iif(isnull(AppBy2,true), "", AppBy2), AppBy3), AppBy4), AppBy5), AppBy6), AppBy7), AppBy8), AppBy9, AppBy10), AppBy11) as Result 
from entry 

enter image description here

期待される結果に到着するために軽量化の速度で動作する他の方法はありますか? 6百万のデータに対してこのクエリを実行します。

答えて

4

COALESCE (Transact-SQL)を使用してください。リスト内の最初のNOT NULL列の値を返します。

SELECT COALESCE(AppBy11, AppBy10,AppBy9,AppBy8,AppBy7,AppBy6,AppBy5,AppBy4,AppBy3,AppBy2,AppBy1) as Result 
FROM entry 
+1

すごく簡単で効率的です。ありがとうたくさん:) – Sixthsense

+0

喜んで:) –

関連する問題