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 回答