GroupBy(MS SQL 服务器与 MySQL)
GroupBy (MS SQL Server vs MySQL)
我和这个人有类似的问题:
SELECT
SubscriberKey,
EmailAddress,
MIN(CreatedDate) AS CreateDate,
FROM [_ListSubscribers]
WHERE EmailAddress = 'email@address.com'
AND STATUS = 'active'
GROUP BY EmailAddress
如何查看与最旧记录的电子邮件地址关联的 SubscriberKey 是什么? SubscriberKey 是一个 TEXT 字段。我尝试使用 MIN(SubscriberKey) 但它没有 return 正确的值。并且在 GroupBy 子句中添加它也无法 return 正确的值。
这是我想要的结果:
订阅者密钥
电子邮件地址
创建日期
电子邮件@address.com
电子邮件@address.com
2018 年 8 月 21 日
这是此电子邮件记录的完整数据库示例:
订阅者密钥
电子邮件地址
创建日期
状态
电子邮件@address.com
电子邮件@address.com
2018 年 8 月 21 日
活跃
Jadfsok134324
电子邮件@address.com
2020 年 5 月 15 日
活跃
在这两个数据库中,您将使用相关子查询或 row_number()
:
SELECT l.*
FROM (SELECT l.*,
ROW_NUMBER() OVER (PARTITION BY emailaddress ORDER BY CreatedDate DESC) as seqnum
FROM [_ListSubscribers] l
WHERE EmailAddress = 'email@address.com' AND STATUS = 'active'
) l
WHERE seqnum = 1;
当然,如果您只需要一行,那么 fetch first
在任一数据库中都更容易:
SELECT l.*
FROM [_ListSubscribers] l
WHERE EmailAddress = 'email@address.com' AND STATUS = 'active'
ORDER BY createdAt ASC
OFFSET 0 ROW FETCH FIRST 1 ROW ONLY;
我和这个人有类似的问题:
SELECT
SubscriberKey,
EmailAddress,
MIN(CreatedDate) AS CreateDate,
FROM [_ListSubscribers]
WHERE EmailAddress = 'email@address.com'
AND STATUS = 'active'
GROUP BY EmailAddress
如何查看与最旧记录的电子邮件地址关联的 SubscriberKey 是什么? SubscriberKey 是一个 TEXT 字段。我尝试使用 MIN(SubscriberKey) 但它没有 return 正确的值。并且在 GroupBy 子句中添加它也无法 return 正确的值。
这是我想要的结果:
订阅者密钥 | 电子邮件地址 | 创建日期 |
---|---|---|
电子邮件@address.com | 电子邮件@address.com | 2018 年 8 月 21 日 |
这是此电子邮件记录的完整数据库示例:
订阅者密钥 | 电子邮件地址 | 创建日期 | 状态 |
---|---|---|---|
电子邮件@address.com | 电子邮件@address.com | 2018 年 8 月 21 日 | 活跃 |
Jadfsok134324 | 电子邮件@address.com | 2020 年 5 月 15 日 | 活跃 |
在这两个数据库中,您将使用相关子查询或 row_number()
:
SELECT l.*
FROM (SELECT l.*,
ROW_NUMBER() OVER (PARTITION BY emailaddress ORDER BY CreatedDate DESC) as seqnum
FROM [_ListSubscribers] l
WHERE EmailAddress = 'email@address.com' AND STATUS = 'active'
) l
WHERE seqnum = 1;
当然,如果您只需要一行,那么 fetch first
在任一数据库中都更容易:
SELECT l.*
FROM [_ListSubscribers] l
WHERE EmailAddress = 'email@address.com' AND STATUS = 'active'
ORDER BY createdAt ASC
OFFSET 0 ROW FETCH FIRST 1 ROW ONLY;