根据条件查询到 return 第一行
Query to return first row based on condition
我想仅在满足条件时从 table 中获取第一行。 table 有多个条目,只有当列的特定值出现在 table 的顶部时,查询才应该 return 输出,否则查询不应该 return 任意行。
SELECT (CASE WHEN COL1 = 'AAA' THEN COL1 ELSE NULL END) AS A
FROM TABLE
QUALIFY ROW_NUMBER () OVER (ORDER BY TIMESTAMP DESC) = 1
WHERE A IS NOT NULL
如果列的值 'AAA' 出现在 table 的顶部,那么它应该 return 输出,如果不是,那么没有行应该是 return编辑。即使第一行不是 'AAA'.
,我仍然得到 'AAA' 的输出
此查询应从 table 中获取第一行并查看 COL1 是否等于 "AAA."
SELECT * FROM (SELECT * FROM TABLE ORDER BY TIMESTAMP DESC LIMIT 1) WHERE COL1 = 'AAA'
您必须将 WHERE 条件移至 QUALIFY:
SELECT *
FROM TABLE
QUALIFY ROW_NUMBER () OVER (ORDER BY TIMESTAMP DESC) = 1
AND COL1 = 'AAA'
我想仅在满足条件时从 table 中获取第一行。 table 有多个条目,只有当列的特定值出现在 table 的顶部时,查询才应该 return 输出,否则查询不应该 return 任意行。
SELECT (CASE WHEN COL1 = 'AAA' THEN COL1 ELSE NULL END) AS A
FROM TABLE
QUALIFY ROW_NUMBER () OVER (ORDER BY TIMESTAMP DESC) = 1
WHERE A IS NOT NULL
如果列的值 'AAA' 出现在 table 的顶部,那么它应该 return 输出,如果不是,那么没有行应该是 return编辑。即使第一行不是 'AAA'.
,我仍然得到 'AAA' 的输出此查询应从 table 中获取第一行并查看 COL1 是否等于 "AAA."
SELECT * FROM (SELECT * FROM TABLE ORDER BY TIMESTAMP DESC LIMIT 1) WHERE COL1 = 'AAA'
您必须将 WHERE 条件移至 QUALIFY:
SELECT *
FROM TABLE
QUALIFY ROW_NUMBER () OVER (ORDER BY TIMESTAMP DESC) = 1
AND COL1 = 'AAA'