0

テーブルで保険料が 0 の保険証券を検索する必要がありますが、同じ保険証券番号の別の保険証券が保険料を持っている場合はそうではありません。ここに私の疑似コードがあります:

select * from tblPolicies where premium = 0
(but not if anther record has the same policyNumber and premium <> 0)

私はそれがひどいことを知っていますが、私は迷っていて、それが私が思いついた最高のものでした.

4

2 に答える 2

1
select p_no from 
(select p_no, sum(premium) as tot_prem from policy group by p_no) as pol 
where tot_prem>0;

p_no->プレミアム_no

ポリシー->ポリシー テーブル

于 2013-10-22T03:51:30.297 に答える
1

可能なクエリ 1:

SELECT M.* FROM tblPolicies AS M
WHERE premium = 0 AND policyNumber NOT IN 
(
   SELECT S.policyNumber 
   FROM tblPolicies AS S 
   WHERE S.policyNumber = M.policyNumber
   AND S.premium <> 0 
)

可能なクエリ 2:

SELECT SA.* FROM 
(
  SELECT M.* FROM tblPolicies AS M
  WHERE premium = 0
) AS SA
INNER JOIN tblPolicies AS SB
ON SA.policyNumber = SB.policyNumber 
WHERE SB.premium <> 0 

可能なクエリ 3:

SELECT * FROM tblPolicies AS SA
INNER JOIN tblPolicies AS SB
ON SA.policyNumber = SB.policyNumber 
WHERE SA.premium = 0 AND SB.premium <> 0 
于 2013-10-22T03:11:24.933 に答える