ดำเนินการ SUMIF เช่นเดียวกับการดำเนินการโดยใช้ SQL Server Report Builder

ฉันกำลังพยายามสร้างผลรวมแบบมีเงื่อนไขใน SQL Server Report Builder 3.0

การแสดงออกของฉันมีลักษณะเช่นนี้:

=Sum(Iif(Fields!ProjectTypeID.Value=2,Fields!kWp.Value,0))

ฉันหวังว่านิพจน์นี้จะสร้างผลรวมของ kWp ของโครงการประเภท 2 ทั้งหมด

น่าเสียดายที่มันไม่ควรเป็นเช่นนั้น และดูเหมือนจะไม่เข้าใจว่าทำไม มันส่งคืนผลลัพธ์เป็น 0 แม้ว่าฉันจะรู้ว่าคอลัมน์ kWp มีค่าที่ไม่เป็นศูนย์ และคอลัมน์นั้นไม่มีค่าว่าง

เพื่อนร่วมงานจัดการเพื่อให้ได้ผลลัพธ์ที่เป็นบวกโดยการแทนที่

Fields!kWp.Value 

กับ

1 * Fields!kWp.Value

แต่เราไม่รู้ว่าทำไมมันถึงได้ผล ดังนั้นจึงไม่สามารถเชื่อถือคำตอบได้จริงๆ

ฉันจะทำให้ผลรวมตามเงื่อนไขนี้ประพฤติตัวมันเองได้อย่างไร?


person Daniel Neal    schedule 14.06.2012    source แหล่งที่มา
comment
คุณมีค่าทศนิยมเก็บไว้ในคอลัมน์ kWp หรือไม่?   -  person praveen    schedule 14.06.2012
comment
ใช่ - ทั้งหมดนี้เป็นค่าทศนิยม - ประมาณในช่วง 0 - 100   -  person Daniel Neal    schedule 14.06.2012
comment
จากนั้นคุณจะต้องแปลงค่าเป็น int SUM(iif(Fields!ProjectTypeID.Value = 2,CINT(Fields!FieldkWp.Value),0)   -  person praveen    schedule 14.06.2012
comment
นี่จะไม่ทิ้งส่วนที่เป็นเศษส่วนไปใช่ไหม สิ่งเหล่านี้มีความสำคัญ และฉันไม่ต้องการปัดเศษ 3.4 เป็น 3 ทั้งหมด ฯลฯ   -  person Daniel Neal    schedule 14.06.2012
comment
ดังนั้นควรแปลงทุกสิ่งเป็นทศนิยม SUM(iif(Fields!ProjectTypeID.Value = 2,cdbl(Fields!FieldkWp.Value),0.00)   -  person praveen    schedule 14.06.2012
comment
เยี่ยมมาก - ขอบคุณ! คุณช่วยทำให้สิ่งนี้เป็นคำตอบได้ไหม เพื่อที่ฉันจะได้ทำเครื่องหมายว่าเป็นคำตอบ   -  person Daniel Neal    schedule 14.06.2012
comment
ฉันได้อัปเดตคำตอบของฉันแล้ว   -  person praveen    schedule 14.06.2012


คำตอบ (4)


ประเภทข้อมูลของคอลัมน์ 'kWp' คือทศนิยม ดังนั้นคุณต้องแปลงค่าเริ่มต้นเป็น 0.00 หรือแปลงคอลัมน์เป็นสองเท่า

 SUM(iif(Fields!ProjectTypeID.Value = 2,cdbl(Fields!kWp.Value),0.00))
person praveen    schedule 14.06.2012

หากต้องการรับ sum ของ kWp ของโปรเจ็กต์ประเภท 2 ทั้งหมด นิพจน์จะเป็นดังนี้

=IIf(Fields!ProjectTypeID.Value=2,sum(Fields!kWp.Value),0) 

ฉันหวังว่านี่จะช่วยคุณได้

person Venaikat    schedule 14.06.2012
comment
ขอบคุณสำหรับคำตอบ. คุณแน่ใจหรือว่านี่จะรวมเฉพาะค่าที่เป็นจริงเท่านั้น เมื่อเขียนในลักษณะนี้ ดูเหมือนว่า if จะดำเนินการก่อน จากนั้นจึงส่งคืนผลรวมของฟิลด์ทั้งหมด - person Daniel Neal; 14.06.2012
comment
ฉันลองแล้วผลลัพธ์ก็เหมือนกับ =SUM(Fields!kWp.Value) - person HEDMON; 16.08.2019

ฉันมีปัญหาที่คล้ายกัน สิ่งนี้ใช้ได้กับฉัน:

=Sum(iif(Fields!date_break.Value = "0001-01-01",Fields!brkr_fee.Value, nothing))

zb

person Zalek Bloom    schedule 14.05.2018

หากต้องการหาผลรวมตามเงื่อนไข คุณสามารถลองใช้นิพจน์นี้ได้

=sum(IIf(Fields!balance.Value > 0,(Fields!balance.Value),0))

มันจะรวมเฉพาะจำนวนบวกเท่านั้น ไม่อย่างนั้นมันจะบวก 0 เข้ากับผลรวม คุณสามารถทำได้ในทางกลับกัน

person Ghayour Khan    schedule 29.04.2017