使用 have 子句 tsql 优化数据元素

问题描述

我正在尝试提取一个仅在存在两个限定符时才返回记录的数据集。我尝试过左连接,在临时表中填充数据,然后操作某些东西,然后是大量的 have 子句(导致子查询选择和附加组)。如果我能提供进一步帮助,我将不胜感激。

查询

E                       TYPE    Number
FAKEEMAIL1@Gmail        NAME1   1
FAKEEMAIL1@Gmail        NAME2   1
otheremailj@gmail.com   Name1   21

当前结果集:

E                   TYPE    Number
FAKEEMAIL1@Gmail    NAME1   1
FAKEEMAIL1@Gmail    NAME2   1

期望的结果集:

async for

谢谢。

解决方法

让我们试试下面的查询。我使用临时表让事情变得更简单。

if object_id('tempdb.dbo.#email') is not null drop table #email
create table #email
(
    email varchar(50),typeValue varchar(15),Number int
)


insert into #email(email,typeValue,Number)
Select 
    E,CASE WHEN QUALIFER = '1' THEN 'NAME1' WHEN QUALIFER = '2' then 'NAME2' ELSE 'FINALNAME' END AS TYPE,count(rt.ID) 'Number '
from TABLE_ONE  co (nolock) 
join TABLE_TWO rt (nolock) 
on co.ID = rt.ID
where co.E in (select * from #tempEmail)
AND convert(date,co.INSERTED_TIMESTAMP)between '1/1/2020' and '8/15/2020'
AND TRANS_STATUS = 'APPROVED'
group by E,QUALIFER


select a.email,a.typeValue
from #email a
inner join
(
select email,rank() over (partition by email order by typeValue) as typeCount
from #email t
 ) as b
 on b.email = a.email
 and b.typeCount > 1