Я специалист по продажам, заинтересованный в дальнейшем совершенствовании своих навыков в SQL. До сих пор Stackoverflow был для меня отличным ресурсом!
Цель:
Я хочу получить точный подсчет всех наших клиентов по DMA (он же Metro U.S. Area), где приведенное ниже выражение истинно.
ПРОБЛЕМА
Прямо сейчас, когда я выполняю запрос, результирующий счетчик для столбца «текущий месяц -1» (который должен возвращать счет всех клиентов, которые соответствуют условному выражению) просто возвращает 1. Я хотел бы для этого чтобы вернуть счетчик o.intorgnodeID (IDS клиента), в котором выражение case было истинным (57 клиентов).
Другими словами, я подозреваю, что «тогдашняя» часть описания дела - это то, что вызывает у меня проблемы. Но я не уверен, как изменить «1», чтобы считать только результаты исходного оператора case
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 Result
ABILENE-SWEETWATER DMA 1
Желаемые результаты:
strDMANode Column Result
ABILENE-SWEETWATER DMA 57