Estou tentando criar uma variável de sinalizador binário onde esta nova coluna indica se um ID possui um item de uma longa lista de itens. A tabela é chamada items
e existe no Snowflake.
Minha mesa parece
ID | Items |
------------
1 | A |
1 | B |
1 | C |
1 | X |
2 | N |
2 | M |
2 | P |
3 | R |
3 | T |
3 | X |
Quero criar uma coluna que mostre quais IDs possuem o item X. Minha saída esperada é
ID | HasX |
-----------
1 | 1 |
2 | 0 |
3 | 1 |
Eu tentei algumas opções diferentes, mas quando o faço
SELECT
i.ID,
CASE
WHEN Items IN ('X')
THEN 1 OVER (PARTITION BY ID)
ELSE 0
END AS HasX
FROM items i
o que me dá um erro Invalid function '1'
.
Provavelmente é simples, mas ainda não encontrei uma solução em lugar nenhum. Suspeito que preciso usar uma função de janela como esta, mas ainda não descobri como fazer isso com CASE WHEN.