我有以下示例表:
|| *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 ||
谢谢!
答案 0 :(得分: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个以上不同字母的情况。但它不会显示重复项,如果至少有2个唯一字母,则不会显示NULL
。
答案 1 :(得分:1)
如果我理解你,你想要做的是将第3列与第1列合并,第4列与第2列合并。
this post已经回答了以下问题。