1

これが私の問題です。多数の列を含む Microsoft SQL サーバー データベース テーブルがあります。(このテーブルのデータ構造を変更することはできません!)

  • この表の 21 列は「実際の」サイズを表しています
  • この表の 21 列は「相対」サイズを表しています
  • 実際のサイズの列は、列番号によって相対サイズの列に対応します。
    (例: ActualColumn1はRelativeColumn1に対応し、ActualColumn2はRelativeColumn2に対応し、ActualColumnX から RelativeColumnXまでは 21 まで)

入力された「実際の」値に基づいて、関連する「相対」値を返す必要があります。

次の case ステートメントで必要なことの一部を行うことができましたが、case ステートメントには最大 10 個の条件があるため、テーブルの 21 列すべてをカバーすることはできません。この問題にアプローチする最善の方法は何でしょうか? 私の目標は、これを選択ステートメントに入れて、相対サイズを選択してクエリで返すことができるようにすることです。

caseステートメントで行ったことの例:

SELECT
    T.AValue
    CASE WHEN (T.ActualColumn1 = T.AValue) then T.RelativeColumn1 ELSE
        CASE WHEN (T.ActualColumn2 = T.AValue) THEN T.RelativeColumn2 ELSE
            CASE WHEN (T.ActualColumn3 = T.AValue) THEN T.RelativeColumn3 ELSE
                CASE WHEN (T.ActualColumn4 = T.AValue) THEN T.RelativeColumn4 ELSE
                    NULL
                END 
            END 
        END 
    END AS RValue
FROM T

ご協力ありがとうございました!

4

1 に答える 1