问题描述
我正在尝试提取一个仅在存在两个限定符时才返回记录的数据集。我尝试过左连接,在临时表中填充数据,然后操作某些东西,然后是大量的 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