我正在尝试创建一个二进制标志变量,其中的新列指示某个ID是否包含来自一长串项目的项目中的某个项目。该表名为items
Snowflake,并且存在于Snowflake中。
我的桌子看起来像
ID | Items |
------------
1 | A |
1 | B |
1 | C |
1 | X |
2 | N |
2 | M |
2 | P |
3 | R |
3 | T |
3 | X |
我想创建一个列来显示哪些 ID 包含项目 X。我的预期输出是
ID | HasX |
-----------
1 | 1 |
2 | 0 |
3 | 1 |
我尝试了几种不同的选择,但当我这样做时
SELECT
i.ID,
CASE
WHEN Items IN ('X')
THEN 1 OVER (PARTITION BY ID)
ELSE 0
END AS HasX
FROM items i
这给了我一个错误Invalid function '1'
。
这可能很简单,但我还没找到解决方案。我怀疑我需要使用类似的窗口函数,但我还没弄清楚如何使用 CASE WHEN。