これを書くにはもっと良い方法があるに違いありませんが、それが何であるかはわかりません。基本的に、別の列で条件が満たされた 1 つの列から個別の値を数えようとしています。このリンクを見つけましたが、ここで適用する方法がわかりません。
これがクエリです。私はSQL Server 2008R2を使用しています
SELECT lot,
(SELECT COUNT(DISTINCT d.pid) FROM invdet d WHERE upk = 0 and d.lot = [invdet].lot) as noUpk,
(SELECT COUNT(DISTINCT d.pid) FROM invdet d WHERE upk = 1 and d.lot = [invdet].lot) as isUpk
FROM invdet
WHERE ([status] in ('PQ','P2','FA','F2','BH','RL','SC','LD','PS'))
GROUP BY lot
HAVING COUNT(CASE WHEN invdet.upk = 1 THEN 1 ELSE null END) > 0