-- ============================================================================= -- گزارش ساده: ورودی‌های هر هفته باشگاه (+ اسامی) -- ============================================================================= -- تعریف: -- Users.Created داخل بازه هفته -- و ClubMembership.Created هم داخل همان بازه -- IsActive=1 → فعال | IsActive=0 → غیرفعال -- ============================================================================= SET NOCOUNT ON; ------------------------------------------------------------ -- ۱) خلاصه هر هفته ------------------------------------------------------------ SELECT wd.DisplayName AS [هفته], CONVERT(varchar(10), wd.StartDate, 23) AS [از], CONVERT(varchar(10), wd.EndDate, 23) AS [تا], COUNT(DISTINCT CASE WHEN u.Id IS NOT NULL AND cm.IsActive = 1 THEN u.Id END) AS [تعداد_فعال], SUM(CASE WHEN u.Id IS NOT NULL AND cm.IsActive = 1 THEN ISNULL(NULLIF(cm.InitialContribution, 0), ISNULL(p.ActivationFee, 0)) ELSE 0 END) AS [مبلغ_فعال], COUNT(DISTINCT CASE WHEN u.Id IS NOT NULL AND cm.IsActive = 0 THEN u.Id END) AS [تعداد_غیرفعال], SUM(CASE WHEN u.Id IS NOT NULL AND cm.IsActive = 0 THEN ISNULL(NULLIF(cm.InitialContribution, 0), ISNULL(p.ActivationFee, 0)) ELSE 0 END) AS [مبلغ_غیرفعال], ISNULL(( SELECT SUM(wp.TotalPoolAmount) FROM CMS.WeeklyCommissionPools wp WHERE wp.WeekDefinitionId = wd.Id AND wp.IsDeleted = 0 ), 0) AS [استخر_هفته] FROM CMS.WeekDefinitions wd LEFT JOIN CMS.Users u ON u.IsDeleted = 0 AND u.Created >= wd.StartDate AND u.Created < wd.EndDate LEFT JOIN CMS.ClubMemberships cm ON cm.UserId = u.Id AND cm.IsDeleted = 0 AND cm.Created >= wd.StartDate AND cm.Created < wd.EndDate LEFT JOIN CMS.Packages p ON p.Id = cm.LastPackageId AND p.IsDeleted = 0 WHERE wd.IsDeleted = 0 GROUP BY wd.Id, wd.DisplayName, wd.StartDate, wd.EndDate ORDER BY wd.StartDate DESC; ------------------------------------------------------------ -- ۲) جزئیات اسامی (هر نفر یک ردیف) ------------------------------------------------------------ SELECT wd.DisplayName AS [هفته], CONVERT(varchar(10), wd.StartDate, 23) AS [از], CONVERT(varchar(10), wd.EndDate, 23) AS [تا], u.Id AS [UserId], LTRIM(RTRIM(ISNULL(u.FirstName, N'') + N' ' + ISNULL(u.LastName, N''))) AS [نام], u.Mobile AS [موبایل], CASE WHEN cm.IsActive = 1 THEN N'فعال' ELSE N'غیرفعال' END AS [وضعیت], ISNULL(NULLIF(cm.InitialContribution, 0), ISNULL(p.ActivationFee, 0)) AS [مبلغ], CONVERT(varchar(19), u.Created, 120) AS [تاریخ_ایجاد_کاربر], CONVERT(varchar(19), cm.Created, 120) AS [تاریخ_ایجاد_عضویت] FROM CMS.WeekDefinitions wd INNER JOIN CMS.Users u ON u.IsDeleted = 0 AND u.Created >= wd.StartDate AND u.Created < wd.EndDate INNER JOIN CMS.ClubMemberships cm ON cm.UserId = u.Id AND cm.IsDeleted = 0 AND cm.Created >= wd.StartDate AND cm.Created < wd.EndDate LEFT JOIN CMS.Packages p ON p.Id = cm.LastPackageId AND p.IsDeleted = 0 WHERE wd.IsDeleted = 0 ORDER BY wd.StartDate DESC, cm.IsActive DESC, u.Id;