Sql server 我有一个大的供应商列表和一个更大的供应商电子邮件地址列表
我有一个很大的供应商名单和一个更大的发件人电子邮件地址名单。 有时,一个供应商将拥有与唯一发件人相同的名为“processor x”的发件人电子邮件地址,另一个供应商可能拥有多个发件人电子邮件地址,但其中包括一个发件人“processor x”。另一个供应商可能有许多发件人电子邮件地址,但没有“proccessor x”作为其电子邮件之一 我想标记只有发件人电子邮件地址为“processor x”的供应商排名为1,但其他供应商的其他2个条件被称为2 我怎样才能做到这一点?这可能吗 非常感谢您抽出时间Sql server 我有一个大的供应商列表和一个更大的供应商电子邮件地址列表,sql-server,rank,ranking-functions,Sql Server,Rank,Ranking Functions,我有一个很大的供应商名单和一个更大的发件人电子邮件地址名单。 有时,一个供应商将拥有与唯一发件人相同的名为“processor x”的发件人电子邮件地址,另一个供应商可能拥有多个发件人电子邮件地址,但其中包括一个发件人“processor x”。另一个供应商可能有许多发件人电子邮件地址,但没有“proccessor x”作为其电子邮件之一 我想标记只有发件人电子邮件地址为“processor x”的供应商排名为1,但其他供应商的其他2个条件被称为2 我怎样才能做到这一点?这可能吗 非常感谢您抽出
我将通过使用选择性计数运算符来实现这一点。大概是这样的:
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
如果您可以模拟两个表的示例,其中一行或两行代表了表的结构,这将非常有用。我本以为您可以简单地将join放在“processor x”上,然后用一个简单的case语句检查join是否返回null。如何添加附件?