Saya mencoba untuk mendapatkan Produk dari semua baris untuk kolom tertentu dalam grup berdasarkan permintaan. Kebanyakan contoh yang saya temukan menunjukkan saya ke arah penggabungan exp
, sum
danlog
exp(sum(log([Column A])))
Masalah yang saya alami adalah bahwa kolom berisi beberapa angka nol untuk nilai dan dengan demikian saya mendapatkan kesalahan ini ketika angka nol diteruskan ke log
fungsi:
Terjadi operasi floating point yang tidak valid.
Saya pikir saya bisa mengatasi ini dengan menggunakan case
ekspresi, tapi itu tidak berfungsi seperti yang saya pikir seharusnya, karena sepertinya mengevaluasi semua kasus ...
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
Diberikan set hasil berikut:
Id Name Value
_________________________________
1 a 1
2 a 2
3 b 0
4 b 1
Saya berharap mendapatkan baris berikut:
Name Product
_____________
a 2
b 0
Jadi dalam ringkasan ... Bagaimana Anda mengalikan baris dalam kolom yang dapat berisi angka bernilai negatif atau nol?