आपका तरीका काफी उचित है। nullif()
पर अच्छी पकड़ sum()
में , वैसे। हालांकि else
खंड है then
. के बाद ही गणना की जाती है , अन्य के घटकों की गणना एकत्रीकरण के दौरान की जाती है -- इसलिए log(0)
एक त्रुटि लौटाएगा।
मुझे लगता है कि चिह्न की गणना करने के कुछ आसान तरीके हैं, जैसे:
power(-1, sum(case when column1 < 0 then 1 else 0 end))
या:
(case when sum(case when column1 < 0 then 1 else 0 end) % 2 = 0 then 1 else -1 end)
हालांकि, कौन सा संस्करण "सरल" है, यह राय का विषय है।