0

我正在尝试编写一个查询,从表中显示详细信息(发票号码、姓名、电话和电子邮件),但仅在条目符合这些特定要求的情况下:

从任何日期返回电子邮件地址在整个表中仅出现一次的行,并返回电子邮件地址在过去 3 个月内仅输入一次的多次的行。

我相当确定这需要嵌套语句,但我不知道如何设置它。

任何帮助将不胜感激!

4

1 回答 1

0

通过考虑电子邮件地址来解决这个问题。您可以通过以下方式进行分组来确定出现频率:

      select emailaddress, count(*) as TotalCnt,
             sum(case when invoicedate >= sysdate - 90 then 1 else 0 end) as LastThreeMonths
      from t
      group by emailaddress;

这将为您提供所需的信息。以下查询将其连接回原始表以获取您要查找的行:

select t.*
from t join
     (select emailaddress, count(*) as TotalCnt,
             sum(case when invoicedate >= sysdate - 90 then 1 else 0 end) as LastThreeMonths
      from t
      group by emailaddress
     ) e
     on t.emailaddress = e.emailaddress
where e.TotalCnt = 1 or e.LastThreeMonths = 1
于 2013-07-29T12:51:38.567 回答