繁体   English   中英

GroupBy(MS SQL 服务器与 MySQL)

[英]GroupBy (MS SQL Server vs MySQL)

我和这个人有类似的问题: GROUP BY (MySQL vs SQL server)

SELECT 
    SubscriberKey,
    EmailAddress,
    MIN(CreatedDate) AS CreateDate,
FROM [_ListSubscribers]
WHERE EmailAddress = 'email@address.com'
AND STATUS = 'active'
GROUP BY EmailAddress

如何查看与最旧记录的 email 地址相关联的SubscriberKey是什么? SubscriberKey是一个 TEXT 字段。 我尝试使用 MIN(SubscriberKey) 但它没有返回正确的值。 并且在 GroupBy 子句中添加它也无法返回正确的值。

这是我想要的结果:

订户密钥 电子邮件地址 创建日期
电子邮件@地址.com 电子邮件@地址.com 2018 年 8 月 21 日

这是此 email 记录的完整数据库示例:

订户密钥 电子邮件地址 创建日期 地位
电子邮件@地址.com 电子邮件@地址.com 2018 年 8 月 21 日 积极的
Jadfsok134324 电子邮件@地址.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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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