[英]Postgres distinct case statement with window function
我正在寻找使用case语句,该语句将为我列出的每个唯一ID返回数字1,如果ID与上面的ID相同,则返回0。 该列是当前具有“ N”或“ Y”的文本列。
以下是我的数据的示例。 我想使其尽可能短,因为它将在其他SQL中使用。
SQL: select case when Value = 'Y' then 1 else 0 end
返回值:
ID Value
48719 Y -- returns 1
48719 Y -- returns 1
48719 Y -- returns 1
55555 Y -- returns 1
我想看什么。
ID Value
48719 Y -- return 1
48719 Y -- return 0
48719 Y -- return 0
55555 Y -- return 1
编辑 :
这也是一种可能的情况。 对于第一个ID,我希望三行中的任何一行返回1,但其他两行显示0。由于case语句将为第一行返回0,因此我可以让它仅选择一个1对于具有该ID的所有行。
ID Value
48719 N -- returns 1
48719 Y -- returns 0
48719 Y -- returns 0
55555 Y -- returns 1
select
id, value,
(
row_number() over(partition by id) = 1
)::integer as returned_value
from t
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.