1

次のSQLステートメントがあります。

SELECT     C.LINKED_TABLE_ID AS CLIENT_DIWOR, I.STATUS AS AML_STATUS, dbo.CLIENT_MASTER.CLIENTCODE
FROM         AML_INFORMATION AS I INNER JOIN
                dbo.COMM_ENTRY AS C ON C.NAME_ID = I.CONTACT_ID AND C.TABLE_ID = 'C' AND C.PRIMARY_FLAG = 'Y' INNER JOIN
                dbo.CLIENT_MASTER ON C.LINKED_TABLE_ID = dbo.CLIENT_MASTER.DIWOR
WHERE I.CONTACT_ID = 234
    AND I.[STATUS] = 'CC'
    AND (CLIENT_MASTER.DIWOR = I.CONTACT_ID)
    AND (CLIENT_MASTER.POSTING_STATUS <> '')
    AND ((SELECT COUNT(CONTACT_ID) FROM AML_ID_DOCUMENT GROUP BY CONTACT_ID HAVING CONTACT_ID = 234) >1)

これを実行すると0レコードが返されますが、最後のANDステートメントを削除するAND ((SELECT COUNT(CONTACT_ID) FROM AML_ID_DOCUMENT GROUP BY CONTACT_ID HAVING CONTACT_ID = 234) >1)と期待するレコードが返されます。

このようにCOUNT()を使用することは可能ですか?ちなみに、この例のCOUNT()は2レコードを返し、SELECTステートメントに含めると0レコードも返されます。

誰かが私を正しい方向に向けることができますか?

前もって感謝します。

4

3 に答える 3

9

表示されたスクリプトは何も返さないはずです...あなたの持っている部分はこのように見える可能性があります

   and (Select Count(*) from AML_ID_DOCUMENT  where CONTACT_ID =I.CONTACT_ID)>1

istはそのまま動作するはずですが...

于 2012-11-09T16:40:15.987 に答える
6

最後の部分は次のようであってはなりません。

AND EXISTS (SELECT CONTACT_ID FROM AML_ID_DOCUMENT
      WHERE CONTACT_ID = 234
      GROUP BY CONTACT_ID
      HAVING COUNT(CONTACT_ID)>1)
于 2012-11-09T16:38:14.340 に答える