ฉันกำลังพยายามรับผลิตภัณฑ์ของทุกแถวสำหรับคอลัมน์ที่ระบุในการจัดกลุ่มตามแบบสอบถาม ตัวอย่างส่วนใหญ่ที่ฉันได้พบจุดที่ฉันมีต่อการรวมexp
, sum
และlog
exp(sum(log([Column A])))
ปัญหาที่ฉันมีอยู่คือคอลัมน์มีค่าศูนย์บางค่าและทำให้ฉันได้รับข้อผิดพลาดนี้เมื่อค่าศูนย์ส่งผ่านไปยังlog
ฟังก์ชัน:
การดำเนินการจุดลอยตัวไม่ถูกต้องเกิดขึ้น
ฉันคิดว่าฉันสามารถหลีกเลี่ยงปัญหานี้ได้ด้วยการใช้case
นิพจน์ แต่นั่นก็ไม่เป็นไปตามที่ฉันคิดว่ามันควรจะเป็นเพราะดูเหมือนว่าจะประเมินทุกกรณี
select
Name,
Product = case
when min([Value]) = 0 then 0
when min([Value]) <> 0 then exp(sum(log(I))) -- trying to get the product of all rows in this column
end
from ids
group by Name
รับชุดผลลัพธ์ต่อไปนี้:
Id Name Value
_________________________________
1 a 1
2 a 2
3 b 0
4 b 1
ฉันคาดว่าจะได้แถวต่อไปนี้:
Name Product
_____________
a 2
b 0
ดังนั้นโดยสรุป ... คุณจะคูณแถวในคอลัมน์ที่สามารถมีตัวเลขค่าลบหรือศูนย์ได้อย่างไร