1

次の例のテーブルがあります。

 || *Column 1* || *Column 2* || *Column 3* || *Column 4* || 
 ||     a      ||   null     ||     b      ||     a      || 
 ||     b      ||     f      ||    null    ||     f      ||
 ||   null     ||     a      ||     a      ||     b      ||

結果テーブルは次のようにする必要があります。

 || *Column 1* || *Column 2* ||
 ||     a      ||     b      ||
 ||     b      ||     f      ||
 ||     a      ||     b      ||

ありがとう!

4

2 に答える 2

4
SELECT one,
    CASE WHEN one != two THEN two
        WHEN one != three THEN three
        WHEN one != four THEN four END AS two
FROM (  SELECT COALESCE(col1, col2, col3, col4) AS one,
            COALESCE(col2, col3, col4, col1) AS two,
            COALESCE(col3, col4, col1, col2) AS three,
            COALESCE(col4, col1, col2, col3) AS four
        FROM four_columns) AS h

例でどのような結果が必要かを考えると、より簡単な解決策は考えられません。

これは、2 つの列しか存在しないため、これら 4 つの列に 2 つ以上の異なる文字がある場合を明らかに時代遅れにします。ただし、重複は表示されずNULL、少なくとも 2 つの一意の文字がある場合は表示されません。

于 2013-04-17T08:49:07.397 に答える
1

私があなたをよく理解していれば、あなたがしたいことは、列 3 を列 1 に、列 4 を列 2 に結合することです。

次の問題は、この投稿で既に回答されています。

于 2013-04-17T08:46:27.827 に答える