【问题标题】:I have CustomerSession table in sql. Need to do flagging based on some scenario我在 sql 中有 CustomerSession 表。需要根据某些场景进行标记
【发布时间】:2021-11-25 22:32:18
【问题描述】:

我在 sql 中有 CustomerSession 表。 我想为那些访问过第 4 页为 1 并休息为 0 的用户做标记。

结果会是这样的:

【问题讨论】:

  • mysql 还是 sql server?这些是非常不同的 RDBMS 产品,您都已标记。根据产品和版本(窗口函数与子查询),此处的解决方案可能会有所不同。另外,请将示例数据以文本形式分享,以便我们在本地复制以提供帮助。
  • 有问题吗?
  • @CMGeek 据我了解,如果该用户的任何记录具有条件page = '4',他们希望生成一个为用户设置为1 的列flag_4
  • @JNevill,这不就是“flag_4”吗?
  • @CMGeek 这些是想要的结果。示例数据在第一个屏幕截图中。 Innaya,如果我错了,请纠正我。

标签: mysql sql sql-server


【解决方案1】:

您可以通过简单的exists 检查来做到这一点

select *, 
    case when exists (
        select * from CustomerSession t2 
        where t.user=t2.user and t2.page=4
    ) then 1 else 0 end flag_4
from CustomerSession t

【讨论】:

  • 谢谢,这对我有用。
【解决方案2】:

@Innaya,我对你的问题有点困惑,但我会试一试......如果你正在寻找的是一个查询......

SELECT Session, [User], Page, flag_4 = CASE
   WHEN EXISTS (SELECT 1 FROM CustomerSession cs2 WHERE cs2.[User] = cs1.[User] and Page = '4') THEN 1 ELSE 0 END
FROM CustomerSession cs1

Fiddle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多