Summaries a part of rows in reporting services
קבלתי במייל ממישהו בשם פיני את השאלה הבאה: (שיניתי את זה קצת כדי שזה יהיה יותר כללי)
נניח שיש לנו את המבנה הבא:
טבלת מרצים:
טבלת קורסים:
וטבלת מופעים של מרצים בקורסים, כשעמודת type קובעת האם המרצה מעביר את הקורס או רק משתתף בה.
בהינתן השאילתא הבאה:
SELECT
Lecturers.Name, Type, COUNT(*) [count] FROM LecturersINNER 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.