繁体   English   中英

带窗口功能的Postgres区分大小写语句

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM