我想小心地提出我想回答的問題,而不是試圖將它提取到流程中的一個步驟,因此請耐心等待我的「流意識「風格。我提取的問題將如標題所示「如何在保留重複行的同時消除三重行(因此無需分組)?」,但我會接受在該流程的任何步驟都可以得到我想要的答案。使用SQL服務器2016.如何在保留重複行的同時消除三重行(SQL Server 2016)
我想在我們的數據庫中找到「零計費電話」。我用的第一個定義是這樣的代碼
SELECT
max([Inbound Call Client Account]) as [account]
,convert(date,format(Dateadd(hh,1,[Inbound Call Time]),'dd/MM/yyyy'),103) as [Date]
,max([Activation Id]) as [Activation Id]
FROM [Call_Table]
where
convert(date,format(Dateadd(hh,1,[Inbound Call Time]),'dd/MM/yyyy'),103) >= '2017-09-01'
and [Chargeable Duration] = 0
and ([Inbound Connected Call Duration] IS NULL or [Inbound Connected Call Duration] <1)
and [Inbound Call Type] = 'normal operator call'
group by [Inbound Call Time]
基本上任何回答零(或最小)的持續時間的數字呼叫(正常話務員呼叫)。我按入站呼叫時間分組,因爲符合定義的每個呼叫都有兩行,我想在SSRS報告中進行計數,因此每次呼叫只需要一行。
這確定了我想要的呼叫,但它也帶回了我不想要的呼叫。
account Date Activation Id
310722 06/09/2017 15CD7A85-084D-4276-BC80-B5369710EC28
310722 06/09/2017 AA145DE5-A278-4181-8EEF-0AFC4B38F2A8
310722 06/09/2017 71413B46-CDC8-41A2-AD3D-2CE88B7C851F
...
310722 14/09/2017 F36E147A-AC39-4441-9472-225FFD56E013
310722 14/09/2017 04372920-DDC4-47DC-8D9E-1E807441CDB3
我知道(從以前的工作),14日的電話是真正的0計費,而6日的電話不是。所以我研究了區別。
SELECT
[Inbound Call Client Account]
,[Inbound Call Type]
,[Chargeable Duration]
,[Activation Id]
,[Inbound Call Time]
FROM [Call_Table]
where [activation id] = '15CD7A85-084D-4276-BC80-B5369710EC28'
or [activation id] = 'F36E147A-AC39-4441-9472-225FFD56E013'
or [activation id] = 'AA145DE5-A278-4181-8EEF-0AFC4B38F2A8'
or [activation id] = '04372920-DDC4-47DC-8D9E-1E807441CDB3'
or [activation id] = '71413B46-CDC8-41A2-AD3D-2CE88B7C851F'
即生成
將澄清的區別特徵(我)是的誤報具有相同激活id 3行數據。有沒有辦法將這種區別結合到我的原始查詢中,以便它們不再出現?但是,14日的真正積極行已經重複,所以據我所知,一個組不會工作。
道歉。編輯於。 – tomdemaine