【问题标题】:I a have a large list of suppliers and a larger list supplier email addresses我有一个大的供应商列表和一个更大的供应商电子邮件地址列表
【发布时间】:2023-03-24 15:25:01
【问题描述】:

我有大量供应商列表和更大的发件人电子邮件地址列表。 有时,供应商将具有相同的发件人电子邮件地址,称为“处理器 x”作为唯一的发件人电子邮件,另一个供应商可能有许多发件人电子邮件地址,但包括“处理器 x”作为发件人之一。另一个供应商可能有许多发件人电子邮件地址,但没有“处理器 x”作为他们的电子邮件之一。

我想将仅发件人电子邮件地址为“处理器 x”的供应商标记为 1,而将其他两个条件提到的其他供应商标记为 2。

如何在 RANK 中做到这一点?这可能吗?

感谢您的宝贵时间。

【问题讨论】:

  • 如果您可以模拟两个表格的样本,其中一两行代表表格的结构,这将很有用。我原以为您可以简单地将连接留在“处理器 x”上,然后使用一个简单的 case 语句来检查连接是否返回 null
  • 如何添加附件?

标签: sql-server rank ranking-functions


【解决方案1】:

我会通过使用选择性计数运算符来解决这个问题。像这样的:

Declare @Temp 
Table   (
           Customer VarChar(100),
           SendingOrganization varchar(100),
           Sender_Email_Address varchar(100)
        );

Insert Into @Temp Values('entweiler','a1','processor x');
Insert Into @Temp Values('entweiler','a2','processor x');
Insert Into @Temp Values('entweiler','a3','processor x');
Insert Into @Temp Values('entweiler','a4','x@y.com');
Insert Into @Temp Values('entweiler','a4','processor x');
Insert Into @Temp Values('entweiler','a4','processor x');
Insert Into @Temp Values('entweiler','a4','processor x');
Insert Into @Temp Values('entweiler','a4','processor x');
Insert Into @Temp Values('entweiler','a5','a@b.com');
Insert Into @Temp Values('entweiler','a5','b@c.com');
Insert Into @Temp Values('entweiler','a5','c@d.com');
Insert Into @Temp Values('entweiler','a5','d@e.com');
Insert Into @Temp Values('entweiler','a5','e@f.comx');
Insert Into @Temp Values('entweiler','a5','processor x');
Insert Into @Temp Values('entweiler','a6','f@g.com');

With Emails As
(
    Select  SendingOrganization,
            Count(Case when sender_email_address = 'processor x' Then 1 End) As WithProcessor,
            Count(Case when sender_email_address <> 'processor x' Then 1 End) As WithoutProcessor,
            Count(*) As AllEmail
    From    @Temp
    Group By SendingOrganization
)
Select  T.*,
        Case When WithProcessor = AllEmail Then 1
             When WithoutProcessor = allEmail Then 3
             Else 2
             End As Rank
From    Emails
        Inner Join @Temp T
            On Emails.SendingOrganization = T.SendingOrganization

【讨论】:

    猜你喜欢
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    相关资源
    最近更新 更多