SQL Server:在查询中获取按日期排列的安全性计数-有没有更简单的方法来编写此代码?

时间:2019-04-28 18:13:54

标签: sql sql-server

我需要获取priceinfo表中存在的按日期排序的安全性计数。但是安全性类型在另一个表中(安全性主表)。

使用以下命令解决查询。

with priceinfo as 
(
     select distinct pdate 
     from pricing 
     where pdate >= '20190101'
)
select count(distinct security), pi.pdate 
from pricing pi 
join priceinfo on pricing.pdate = priceinfo.pdate
               and security in (select distinct security 
                                from securitymaster 
                                where pdate = priceinfo.pdate 
                                  and securitytype='BOND' )
group by 
    pi.pdate
order by 
    pi.pdate

有没有更简单的方法来编写此查询?

注意:安全类型仅在安全主机中可用。 但是我需要价格表中存在的证券清单。

表:SecurityMaster

enter image description here

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

这是您要寻找的吗?

select p.pdate, count(*)
from pricing p join
     securitymaster sm
     on p.pdate = sm.pdate and p.security = sm.security
where sm.securitytype = 'Bond'
group by p.pdate
order by p.pdate;