目前正在研究雪花。我想为下表编写 SQL 查询-
管道 | 状态 |
---|---|
月索普 | 无三角洲 |
月索普 | 未找到数据 |
月索普 | 没有文件 |
天绳 | 未找到数据 |
五绳 | 无三角洲 |
天绳 | 失败 |
五绳 | 无三角洲 |
年度 | 未找到数据 |
要求是选择一个具有一定优先级状态的管道(分组后)。
即如果存在“NoDelta”,则应选择它,因为它是第一优先级。 else-if 'NoDataFound' 是第二优先级。
选择的优先级是“NoDelta”、“NoDataFound”、“NoFiles”、“Failed”。因此,输出应如下所示-
管道 | 状态 |
---|---|
月索普 | 无三角洲 |
天绳 | 未找到数据 |
五绳 | 无三角洲 |
年度 | 未找到数据 |
您能帮我填写查询吗?我正在尝试使用 CASE,但不知道正确的顺序。
CASE
语句分配优先级,QUALIFY
为每个管道选择具有最高优先级的状态。
SELECT
pipeline,
status
FROM table
QUALIFY ROW_NUMBER() OVER (
PARTITION BY pipeline
ORDER BY CASE status
WHEN 'NoDelta' THEN 1
WHEN 'NoDataFound' THEN 2
WHEN 'NoFiles' THEN 3
WHEN 'Failed' THEN 4
ELSE 5
END ASC
) = 1
ORDER BY pipeline;