基本SQL-大小写表达式-修改“;然后是1,否则为0“;返回case语句为true时的行数

基本SQL-大小写表达式-修改“;然后是1,否则为0“;返回case语句为true时的行数,sql,count,case,Sql,Count,Case,我是一名销售专业人员,有兴趣进一步提高我的SQL技能。到目前为止,Stackoverflow对我来说是一个很好的资源 目标: 我想通过DMA(又名Metro U.S.Area)获得我们所有客户的清晰计数,其中下面的案例表达式为真 问题 现在,当我执行查询时,“current month-1”列的结果计数(应该返回与case语句匹配的所有客户的计数)只是返回1。我想让它返回o.intorgnodeID(客户ID)的计数,其中大小写表达式为true(57个客户) 换句话说,我怀疑案例陈述的“then

我是一名销售专业人员,有兴趣进一步提高我的SQL技能。到目前为止,Stackoverflow对我来说是一个很好的资源

目标:

我想通过DMA(又名Metro U.S.Area)获得我们所有客户的清晰计数,其中下面的案例表达式为真

问题

现在,当我执行查询时,“current month-1”列的结果计数(应该返回与case语句匹配的所有客户的计数)只是返回1。我想让它返回o.intorgnodeID(客户ID)的计数,其中大小写表达式为true(57个客户)

换句话说,我怀疑案例陈述的“then 1”部分是导致我出现问题的原因。但我不知道如何修改“1”来计算原始案例陈述的结果

SELECT
    o.strDMANode --- AKA Metro Market
    ,case when(sum(case when (year(getdate()) - 1) * 12 + month(getdate()) - ((year(sbi.dtmdelivered) - 1) * 12 + month(sbi.dtmdelivered))  = 24 then 1 else 0 end)) >0 then 1 else 0 end as 'Current Month - 1' --- this is the output column that I hope to have return a value of '57'. Currently is returning a '1'
FROM sqlfact.dbo.uvwreport as sbi
    JOIN [sqlDim].[dbo].[uvwdimOrgNodeType1] o ON [sbi].[intDimOrgNodeID] = [o].[intDimOrgNodeID]
    JOIN [sqlDim].[dbo].[uvwdimProductType1] as "z" ON [sbi].[intDimProductPrimaryID] = [z].[intDimProductID]
WHERE 
    ([sbi].[intstatusid] = 5 OR sbi.intsubstatusid = 43) --- Includes only delivered reports
    and [sbi].[mnyDollarcost] > 0 --- NO $0 reports
    and [o].[bitCurrent] = 1 --- Excludes all historical versions of OrgNode, which were duplicates
    and [o].[strSalesRegionNodeGroup]  = 'Construction' 
GROUP BY [o].[strDMANode]
ORDER BY [o].[strDMANode] asc

目前的结果:

预期结果:

strDMANode Column        Result
ABILENE-SWEETWATER DMA   57

我想您希望将
案例
作为
sum()的参数


好的,当我尝试使用该代码字符串时,我得到一个错误提示:
Msg 4145,级别15,状态1,第3行在“')附近的上下文中指定的非布尔类型的表达式。
strDMANode Column        Result
ABILENE-SWEETWATER DMA   57
sum(case when(case when (year(getdate()) - 1) * 12 + month(getdate()) - ((year(sbi.dtmdelivered) - 1) * 12 + month(sbi.dtmdelivered))  = 24 then 1 else 0 end)) >0 then 1 else 0 end) as 'Current Month - 1'