DCSIMG
Summaries a part of rows in reporting services - שלמה גולדברג (הרב דוטנט)

שלמה גולדברג (הרב דוטנט)

מרצה בסלע ויועץ בעולם ה - net.

Summaries a part of rows in reporting services

 

קבלתי במייל ממישהו בשם פיני את השאלה הבאה: (שיניתי את זה קצת כדי שזה יהיה יותר כללי)
 
נניח שיש לנו את המבנה הבא:
diagram1
 
טבלת מרצים:
 
טבלת קורסים:
 
וטבלת מופעים של מרצים בקורסים, כשעמודת type קובעת האם המרצה מעביר את הקורס או רק משתתף בה.
 
 
בהינתן השאילתא הבאה:
 

SELECT Lecturers.Name, Type, COUNT(*) [count] FROM Lecturers

INNER JOIN LecCourse ON (LecCourse.LecturerId = Lecturers.Id)

INNER JOIN Courses ON (LecCourse.CourseId = Courses.Id)

GROUP BY Lecturers.Name, Type

 
נקבל את התוצאה הבאה: (בטבלה בדו"ח)
 
Name Type Count
tomer false 2
noam true 2
shlomo true 2
 
מה שזה אומר, שנועם ושלמה (שני מרצים) הירצו בשני הרצאות, ותומר השתתף בשניהם.
 
עכשיו השאלה היא כזאת,
 
איך אפשר להוסיף תיבת טקסט שתראה את סכום ההרצאות (זאת אומרת לסכום רק את אלה שה type == true).
ברור שמקוד או ב sql זה מאוד פשוט, השאלה היא, האם זה אפשרי גם ב Reporting Services.
 
והתשובה, שכן.
 
צריך להוסיף תיבת טקסט, וב value לכתוב את ה Expression הבא:

=Sum(iif(Fields!type.Value = "True", Fields!count.Value,0), "dbTest")

שזה אומר:
 
=Sum: בתיבת הטקסט יוצג מה שחוזר מהפונקצייה הזאת.
 
iif: נכניס משפט בדיקה, לאחריו ביצוע פקודה במידה והבדיקה החזירה true, ולאחריו ביצוע פקודה במידה והבדיקה החזירה false.
 
הבדיקה בודקת האם בעמודה type יש את המחרוזת True (ה iif רץ עבור כל שורה בטבלה).
 
במידה וכן נחזיר את הערך שיש בעמודת count.
 
במידה ולא נחזיר את הערך 0.
 
 
בסופו של תהליך בתיבת הטקסט יהיה כתוב 4.
שלח תגובה

(שדה חובה)  

(שדה חובה)  

(אופציונלי)

(שדה חובה) 

Please add 2 and 5 and type the answer here:


Enter the numbers above: