하나의 CASE WHEN 조건 (CompanyGUID 및 LineGUID)이 있고 4 개의 다른 열이있는 4 가지 계산이 필요합니다. 계산이 정상적으로 작동하지만 더 편리하게 사용할 수있는 방법이 궁금합니다. 이 경우 COALESCE 트릭을 사용하는 것과 같습니다.중첩 된 CASE WHEN 문
CASE WHEN dbo.tblCompanyLocations.CompanyGUID = '29634AF7-D0A2-473D-9574-405C23E10F02'
AND dbo.tblQuotes.LineGUID = '1CB72920-B3FC-4822-8030-37B50A2810EB'
THEN isnull(ddaWC.archexMod,1)
END as ExperienceMod,
CASE WHEN dbo.tblCompanyLocations.CompanyGUID = '29634AF7-D0A2-473D-9574-405C23E10F02'
AND dbo.tblQuotes.LineGUID = '1CB72920-B3FC-4822-8030-37B50A2810EB'
THEN case when convert(int,ddawc.premModTtl) <= 0 then 1
when convert(int,ddawc.premModTtl) >= 0
then (1 + ddaWC.premschmod/ddawc.premModTtl) end
END as ScheduleMod,
CASE WHEN dbo.tblCompanyLocations.CompanyGUID = '29634AF7-D0A2-473D-9574-405C23E10F02'
AND dbo.tblQuotes.LineGUID = '1CB72920-B3FC-4822-8030-37B50A2810EB'
THEN isnull(ddaWC.TMpercent,1) END as TerritoryMod,
CASE WHEN dbo.tblCompanyLocations.CompanyGUID = '29634AF7-D0A2-473D-9574-405C23E10F02'
AND dbo.tblQuotes.LineGUID = '1CB72920-B3FC-4822-8030-37B50A2810EB'
THEN case when convert(int,ddaWC.SchedPercent) = 0 or
ddaWC.SchedPercent is not null
then (isnull(ddaWC.archexMod,1)
* (convert(decimal(5,2),isnull(ddaWC.SchedPercent,1))))
* isnull(ddaWC.TMpercent,1)
when ddaWC.SchedPercent is null
then 1 END
END as EffectiveMod
더 편리함이란 무엇을 의미합니까? 적은 코드를 입력해야합니까? – iamdave
죄송합니다. 한 번만 (CompanyGUID 및 LineGUID) 사용할 수 있으며 결과적으로 4 개의 다른 열이있을 수 있습니까? – Oleg
더 좋은 방법,이 쿼리를 작성하는 더 전문적인 방법을 말할 수 있습니다. – Oleg