簡體   English   中英

T-SQL Sum IIf查詢

[英]T-SQL Sum IIf query

    SELECT t1.detail_Date AS clmDate
    ,t1.detail_agentID AS clmPID
    ,t3.HODCode AS clmHOD
    ,t1.detail_CallsHandled AS clmIBConnects
    ,t1.detail_TalkTime AS clmIBTalk
    ,t1.detail_WrapTime AS clmIBWrap
    ,t1.detail_HoldTime AS clmIBHold
    ,t1.detail_HandleTime AS clmIBTotal
    ,Sum(IIf([fldCallRoute.Value] = [Inbound],0)) AS clmIBConnects
--  ,Sum(IIf([fldCallRoute] = "Inbound", [clmTalk], 0)) AS IBTalk
--  ,Sum(IIf([fldCallRoute] = "Inbound", [clmWrap], 0)) AS IBWrap
--  ,Sum(IIf([fldCallRoute] = "Inbound", [clmTalk] + [clmWrap] + [clmHold], 0)) AS IBTotal
    ,Sum(0) AS clmOBSignedOn
    ,Sum(0) AS Preview
    ,Sum(0) AS OBTalk
    ,Sum(0) AS OBUpdate
    ,Sum(0) AS OBWork
    ,Sum(0) AS OBConnects
--  ,Sum(IIf([fldCallRoute] = "Inbound", [clmHold], 0)) AS IBHold
--  ,Sum(IIf([fldCallRoute] = "Outbound", [clmHold], 0)) AS OBHold}

我沒有得到sum(iif ..部分查詢,更具體地說: ,Sum(IIf([fldCallRoute] = "Inbound", [clmIBConnects], 0)) AS clmIBConnects

它顯示無效的列名稱“入站”嗎?無效的列名稱“ clmIBConnects”?

fldCallRoute列在表t2 ,該列具有條目Inbound,因此我不確定為什么它說列名稱為inbound?

您需要對字符串常量使用單引號:

Sum(IIf([fldCallRoute] = 'Inbound', [clmTalk], 0)) AS IBTalk,

我比iif()喜歡case case是ANSI標准,幾乎在所有數據庫中都可用:

SUM(CASE WHEN fldCallRoute = 'Inbound' THEN clmTalk ELSE 0 END) as IBTalk,

您需要對字符串使用單引號' “雙引號"表示一列,通常用於保留字:

,Sum(IIf([fldCallRoute] = 'Inbound', [clmIBConnects], 0)) AS clmIBConnects

您還有6列被評估為Sum(0) ,始終為0 .. Typo?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM