6

他の 4 つの列の値に基づく値を持つ計算列を作成しようとしています。列 1、列 2、列 3、列 4 は、[はい] または [いいえ] のいずれかになります。たとえば、進行状況と呼ばれる計算列の最終結果は、次の行に沿ったものになるはずです。

Progress = CASE
WHEN [Column1] = 'Yes' THEN Value+1
WHEN [Column2] = 'Yes' THEN Value+1
WHEN [Column3] = 'Yes' THEN Value+1
WHEN [Column4] = 'Yes' THEN Value+1
ELSE 0 END

上記の構文は明らかに正しくないため、これが理にかなっていることを願っています。

4

2 に答える 2

2

SQL Server の場合:

SELECT  *
FROM    mytable
CROSS APPLY
        (
        SELECT  COALESCE(SUM(CASE val WHEN 'yes' THEN 1 END), 0)
        FROM    (VALUES (NULL)) q(v)
        UNPIVOT
                (
                val FOR col IN
                (column1, column2, column3, column4)
                ) c
        ) q (progress)

SQLFiddleを参照してください。

于 2013-04-22T20:03:22.643 に答える