sql - SQL CASE WHEN 语句匹配两个列字段
问题描述
希望根据两列匹配返回一个值。但如果列不匹配,则返回默认值SubscriberKey
。
SELECT
CASE SubscriberKey
WHEN SubscriberKey != EmailAddress
THEN ls.SubscriberKey
ELSE EmailAddress
END,
EmailAddress,
CreatedDate
FROM
[_ListSubscribers]
原始数据示例:我想返回记录 0,因为SubscriberKey
匹配EmailAddress
,然后还返回 3 和 4。记录 1 不会被选中,因为它是重复的。
ID | 订户密钥 | 电子邮件地址 | 创建日期 | 地位 |
---|---|---|---|---|
0 | email0@address.com | email0@address.com | 2018 年 8 月 21 日 | 积极的 |
1 | email2@address.com | email0@address.com | 2018 年 5 月 21 日 | 积极的 |
2 | email3@address.com | email6@address.com | 2018 年 8 月 21 日 | 积极的 |
3 | email4@address.com | email6@address.com | 2018 年 5 月 21 日 | 积极的 |
解决方案
这是您可以尝试的一种可能的解决方案。它适用于您的小样本和我尝试过的几个排列。我假设因为您的SubscriberKey
列被称为键,所以它是唯一的。
select * from (
select *,
case when Lag(EmailAddress) over(order by id)=Emailaddress
and lag(SubscriberKey) over(order by id)=EmailAddress
then 0 else 1 end valid
from [_ListSubscribers]
)t
where valid=1
推荐阅读
- python - PyTorch:PyTorch 中的 numpy.linalg.multi_dot() 等价物是什么
- python - Odoo 14:在树视图中添加部分功能
- android - 在颤振中在android中实现人脸ID
- javascript - 事件侦听器仅附加到循环中的最后一个条目
- javascript - React-router-dom:History.push 连接路径并且不会重新路由应用程序
- java - 无法在 Android Studio 中访问 XML 表单主活动
- javascript - 使用 xlsx 数据创建网络。html 的
- javascript - 如何在 Redux 中使用单个订阅者从 reducer 访问多个返回
- excel - 我遇到了一个公式 =SUMIFS(V2:Z2,L2:P2,">"&0)
- prisma - 无法加载有效的 Prisma 配置