SQLをかなり新しくしていて、やや複雑なSQLクエリの最後のステップで問題が発生しています。私はテーブルの何回目かを数えたいので、2つの異なる値が1つ以上の行に現れます。SQLテーブルで2つの異なる値が2つの行に表示される回数
私の具体的なシナリオは、自分のテーブルにもメッセージ/警告がシステムから格納されているということです。これらのアラートは、応答が必要な複数のユーザーに送信されます。私は各アラートに何人の受信者が応答したかをカウントしたいと思います。
私はこれで私はに引っかかっています部分に私のクエリを下に編集した:
このクエリは、各アラートがそれで、各受信者に元のメッセージから含めていませんどのように多くのメッセージを示してSELECT DISTINCT AlertID, count(RecipientID) - count(Distinct RecipientID) as Replies,
FROM [myDB].[dbo].[Alerts]
システム。この問題は、誰かが1回のアラートに2回反応した場合、1にアポストした2つの応答としてカウントされます(これが私の望むものです)。
私は、各DISTINCT AlertIDをカウントし、DISTINCT受信者IDが1行以上のAlertIDで何回表示されるかによってこれを行うことができると考えました。誰かが2回答えたかどうかは関係ありません。なぜなら、1つ以上の応答がある限り、それは1つの応答として数えられるからです。私はこれを動作させるのに問題があります。私のデータは、このようになります
:
RecipientID MsgContents SentBy AlertID
12345 Msg1 mySystem 11111
98765 Msg1 MySystem 11111
12345 1st Reply to Msg1 John Doe 11111
12345 2nd Reply to Msg1 John Doe 11111
98765 reply to Msg1 Mike Smith 11111
12345 Msg3 mySystem 33333
12345 Reply to Msg3 John Doe 33333
12345 Msg2 mySystem 99999
私がすべきクエリの出力をしたいと思います:
AlertID Replies
11111 2
33333 1
99999 0
私はthis answerが役立つだろうと思ったが、それがために仕事を得ることができませんでした私。私はまた、システムが大量のデータを扱うので、可能ならば1つのクエリでそれを保持したいと思います。これが最も簡単な方法でない場合は、私はすべての提案に開放されています。
ご協力いただければ幸いです。
とは対照的に、2行目は、実際の受信者のレコードを取得しますおそらく 'mySystem'によって送信されたレコードは数えてはならないと言及するべきです。 – Ash