如何列出那些ID在where子句中没有的内容?

问题描述 投票:0回答:2

我有2张桌子书和副本。我计算了那些副本的2个日期之间的时间,并按bookID分组,两个日期之间有什么,我得到以下结果:

  • BookID复制数量
  • 111111 1
  • 222222 888
  • 333333 666 SELECT BookID, Count(CopyID) from Copy INNER join Book on Book.BookID = Copy.BookdID where Copy.Time BETWEEN '2017.12.11' AND '2017.12.15' GROUP BY BOOKID

这是我的问题:我想计算所有副本在我的查询中有相同的BookID。例如:我有BookID 111111的1个结果,但是如果有8个副本我想以某种方式包括我的结果。

tsql where
2个回答
0
投票

Ben,以下查询显示书籍的所有副本的计数,其中给定的两个日期之间至少有一个副本

请检查它是否输出所需的内容

select
    b.BookID, Count(c.CopyID)
from Book as b
left outer join Copy as c
    on b.BookID = c.BookID
where b.BookID in (
    select
        distinct c.BookID
    from Copy as c
    where c.Time BETWEEN '2017.12.11' AND '2017.12.15'
)
group by
    b.BookID

0
投票

我认为你甚至不需要预订餐桌

select c.ID, count(*)
from copy c 
where exists ( select 1 
                 from copy 
                where copy.ID = c.ID 
                  and copy.Time BETWEEN '2017.12.11' AND '2017.12.15' 
             )
group by c.ID 
© www.soinside.com 2019 - 2024. All rights reserved.