Din metode er ret fornuftig. God fangst på nullif()
i sum()
, i øvrigt. Selvom else
klausul er kun beregnet efter then
, komponenter af andet beregnes under aggregeringen -- så log(0)
ville returnere en fejl.
Jeg tror, der er nogle enklere måder at beregne tegnet på, såsom:
power(-1, sum(case when column1 < 0 then 1 else 0 end))
eller:
(case when sum(case when column1 < 0 then 1 else 0 end) % 2 = 0 then 1 else -1 end)
Men hvilken version der er "simpelere" er et spørgsmål om mening.