[英]Count(*) in Self Join Not working
我試圖根據以下要求編寫查詢解決方案:“在指定的時間范圍內,例如最近5分鍾,調用FinalCalledPartyNumber(voicemail 3699)的次數大於X次。”
列如下:
使用自聯接,下面的代碼會將呼叫數量的結果集返回到3699,並在電話系統中發出警報。 只有在5分鍾內致電3699次X次以上后,才需要觸發警報。 我試過在Group By之后將 Haveing子句與Count( )一起使用。 但是它僅在Haveing Count( )> = 1 時起作用 。如果更改為Haveting Count(*)> = 2或更高,它將不返回行。
下面以粗體顯示的語法不能更改,它是系統生成的SWQL。
Select VoipCallDetailsAlert.ID, VoipCallDetailsAlert.Name From VoipCallDetailsAlert
Join (
SELECT
vcda2.Name AS vcda2_name,
vcda2.FinalCalledPartyNumber AS vcda2_FinalCalledPartyNumber,
vcda2.DateTimeOrigination AS vcda2_DateTimeOrigination
FROM VoipCallDetailsAlert vcda2
WHERE FinalCalledPartyNumber = '3699'
AND vcda2.DateTimeOrigination > DateAdd(mi, -5, GetDate())
Group By vcda2.name, vcda2.FinalCalledPartyNumber, vcda2.DateTimeOrigination
) Results ON vcda2_name = VoipCallDetailsAlert.Name
樣本結果:
ID Name FinalCalledPartyNumber DateTimeOrigination
101045 555-123-4567 -> 3699 3699 12/20/15 5:29 PM
101049 555-412-4767 -> 3699 3699 12/20/15 5:36 PM
謝謝,多伯
SELECT
VoipCallDetailsAlert.ID,
VoipCallDetailsAlert.Name
From
VoipCallDetailsAlert
JOIN (
SELECT
*,
COUNT(*) OVER (PARTITION BY FinalCalledPartyNumber) fcpnCount
FROM
VoipCallDetailsAlert
WHERE
FinalCalledPartyNumber = '3699'
AND DateTimeOrigination > DATEADD(mi,-5,GETDATE()
) vcda ON VoipCallDetailsAlert.ID = vcda.ID AND fcpnCount >= 2
使用COUNT(*) OVER (PARTITION BY FinalCalledPartyNumber) fcpnCount
會將調用FinalCalledPartyNumber
的次數應用於調用該號碼的每條記錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.