Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 我有一个大的供应商列表和一个更大的供应商电子邮件地址列表_Sql Server_Rank_Ranking Functions - Fatal编程技术网

Sql server 我有一个大的供应商列表和一个更大的供应商电子邮件地址列表

Sql server 我有一个大的供应商列表和一个更大的供应商电子邮件地址列表,sql-server,rank,ranking-functions,Sql Server,Rank,Ranking Functions,我有一个很大的供应商名单和一个更大的发件人电子邮件地址名单。 有时,一个供应商将拥有与唯一发件人相同的名为“processor x”的发件人电子邮件地址,另一个供应商可能拥有多个发件人电子邮件地址,但其中包括一个发件人“processor x”。另一个供应商可能有许多发件人电子邮件地址,但没有“proccessor x”作为其电子邮件之一 我想标记只有发件人电子邮件地址为“processor x”的供应商排名为1,但其他供应商的其他2个条件被称为2 我怎样才能做到这一点?这可能吗 非常感谢您抽出

我有一个很大的供应商名单和一个更大的发件人电子邮件地址名单。 有时,一个供应商将拥有与唯一发件人相同的名为“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。如何添加附件?