SQL Query选择count = 0

use*_*190 1 sql

好的,我需要一个T-SQL大师.

我有一个名为PackageStoreEvents的表,它有一个packageid,storecode和一个eventcode字段.我想返回商店代码2406的packageid值,其中eventcode = 6的计数为0.

我该怎么办?

我坚持这个.

谢谢您的帮助

小智 7

尝试:

select packageid 
from PackageStoreEvents
where storecode = 2406
group by packageid
having sum(case eventcode when 6 then 1 else 0 end)=0;
Run Code Online (Sandbox Code Playgroud)

对于单遍查询.


Dav*_*d M 6

这不是很漂亮,但应该有效.您将连接保留在同一个表中,包括连接条件中的事件代码,断言右表没有行IS NULL,然后执行DISTINCT以避免返回的许多行.

SELECT  DISTINCT p1.packageid
FROM    PackageStoreEvents p1
        LEFT JOIN
                PackageStoreEvents p2
                ON p1.packageid = p2.packageid
                AND p1.storecode = p2.storecode
                AND p2.eventcode = 6
WHERE p2.packageid IS NULL
AND   p1.storecode = 2406
Run Code Online (Sandbox Code Playgroud)