WITH school_dates AS ( SELECT d.date_id, d.date_value, child_organization_id AS school_id, parent_organization_id AS district_id FROM report.dim_date d, report.organization_hierarchy WHERE child_organization_type = 'DISTRICT' and parent_organization_type = 'DISTRICT' AND d.date_id > 20190801 --start date AND d.date_value < DATE_TRUNC('day', GETDATE()) ) , logins AS ( SELECT s.date_value, s.district_id, SUM(measure_login_count) login_count, COUNT(DISTINCT user_id) user_count FROM school_dates s INNER JOIN report.summary_logins l ON s.school_id = l.school_id AND s.date_id = l.date_id GROUP BY s.date_value, s.district_id ) , assessments_completed AS ( SELECT s.date_value, s.district_id, COUNT(DISTINCT userassignment_id) assessments_completed_count FROM school_dates s INNER JOIN report.fact_content_scores cs ON s.school_id = cs.school_id AND s.date_id = cs.date_id AND content_type = 'TEST' GROUP BY s.date_value, s.district_id ) , assignments_completed AS ( SELECT s.date_value, s.district_id, COUNT(DISTINCT userassignment_id) assignments_completed_count FROM school_dates s INNER JOIN report.fact_content_scores cs ON s.school_id = cs.school_id AND s.date_id = cs.date_id AND assignment_id IS NOT NULL GROUP BY s.date_value, s.district_id ) , student_class_enrollments AS ( SELECT s.date_value, s.district_id, COUNT(*) student_class_enrollements_count FROM school_dates s INNER JOIN --using the record insert date time since we don't have a clear enrollment creation date time in the table report.dim_class_student_enrollment se ON s.school_id = se.school_id AND se.insert_datetime >= s.date_value AND se.insert_datetime < DATEADD(DAY, 1, s.date_value) GROUP BY s.date_value, s.district_id ) , classes_created AS ( SELECT s.date_value, s.district_id, COUNT(*) classes_created_count FROM school_dates s INNER JOIN dw.dimclass c ON s.school_id = c.organizationid AND c.createddate >= s.date_value AND c.createddate < DATEADD(DAY, 1, s.date_value) WHERE c.operation = 'Create' GROUP BY s.date_value, s.district_id ) , assignments_created AS ( SELECT s.date_value, s.district_id, COUNT(DISTINCT ca.contentassignmentid) assignments_created_count FROM dw.dimcontentassignment ca INNER JOIN report.dim_organization_user_enrollment ue ON ca.assigneeid=ue.user_id INNER JOIN school_dates s ON s.school_id = ue.school_id WHERE ca.intpartnerid ='realize_prod' AND ca.createddatetime >= s.date_value AND ca.createddatetime < DATEADD(DAY, 1, s.date_value) GROUP BY s.date_value, s.district_id ) SELECT distinct s.date_value, o.organizationname district_name, COALESCE(l.login_count, 0) login_count, COALESCE(l.user_count, 0) user_count, COALESCE(cc.classes_created_count, 0) classes_created_count, COALESCE(sce.student_class_enrollements_count, 0) student_class_enrollements_count, COALESCE(assignments_created_count, 0) user_assignments_created_count, COALESCE(assi.assignments_completed_count, 0) user_assignments_completed_count, COALESCE(ac.assessments_completed_count, 0) assessments_completed_count FROM school_dates s INNER JOIN logins l ON s.district_id = l.district_id AND s.date_value = l.date_value INNER JOIN assessments_completed ac ON s.district_id = ac.district_id AND s.date_value = ac.date_value INNER JOIN assignments_completed assi ON s.district_id = assi.district_id AND s.date_value = assi.date_value INNER JOIN student_class_enrollments sce ON s.district_id = sce.district_id AND s.date_value = sce.date_value INNER JOIN classes_created cc ON s.district_id = cc.district_id AND s.date_value = cc.date_value INNER JOIN assignments_created a ON s.district_id = a.district_id AND s.date_value = a.date_value INNER JOIN dw.dimorganization o ON o.organizationid = l.district_id OR organizationid = ac.district_id OR o.organizationid = assi.district_id OR o.organizationid = sce.district_id OR o.organizationid = cc.district_id OR o.organizationid = a.district_id ORDER BY date_value