Snowflake多列去重查询:提取多列所有唯一值
提取多列唯一值为单列的Snowflake查询
我有一张名为XYZ的表,包含adb1、adb2、adb3三列(所有列均为数值类型)。需要编写Snowflake查询语句,提取这三列中的所有唯一值,返回为单列结果集。
示例输入
| adb1 | adb2 | adb3 |
|---|---|---|
| 11 | 12 | 13 |
| 12 | 24 | 25 |
| 78 | 25 | 13 |
期望输出
| Result column |
|---|
| 11 |
| 12 |
| 13 |
| 24 |
| 25 |
| 78 |
解决方案
可以通过两种简洁方式实现需求:
方法1:UNION ALL + DISTINCT
先通过UNION ALL将三列数据合并为单列,再用DISTINCT去除重复值:
SELECT DISTINCT value AS "Result column" FROM ( SELECT adb1 AS value FROM XYZ UNION ALL SELECT adb2 AS value FROM XYZ UNION ALL SELECT adb3 AS value FROM XYZ ) AS combined_values;
方法2:UNPIVOT操作
利用Snowflake的UNPIVOT语法直接将多列转为单列,再去重,列数较多时该方式更高效简洁:
SELECT DISTINCT value AS "Result column" FROM XYZ UNPIVOT ( value FOR col IN (adb1, adb2, adb3) ) AS unpivoted_data;
两种方法均能输出符合要求的单列唯一值结果。
内容的提问来源于stack exchange,提问作者Mukul Kumar
相关产品推荐
相关产品推荐

