Hej, <code> Du kan inte lägga having inuti en case-sats. En case-sats kan bara returnera ett värde, inget annat.använda case-sats i group by
skulle vilja sortera mitt resultat lite olika beroende på en inparameter. Om den (@stepid) är null ska gruppering ske med en having-sats, annars inte. se kod nedan.
Denna kod fungerar inte, då den klagar på att jag inte får använda ',' eller '=' i case-satsen.
Ngn som kan hjälpa till här?
GROUP BY CASE isnull(@stepid,1) WHEN 1 THEN
rpStep.StepId, St.parentStepId having
((SELECT dbo.fStepIsTop(rpStep.StepID, St.parentStepId)) = 1)
ELSE
rpStep.StepId, St.parentStepId)
END
tack på förhandSv: använda case-sats i group by
where (dbo.fStepIsTop(rpStep.StepID, St.parentStepId) = 1
and @stepid is null)
or @stepid is not null
GROUP BY rpStep.StepId, St.parentStepId
</code>Sv: använda case-sats i group by
Testa så:
GROUP BY rpStep.StepId, St.parentStepId
HAVING CASE isnull(@stepid,1) WHEN 1 THEN dbo.fStepIsTop(rpStep.StepID, St.parentStepId) ELSE 1 End = 1