با سلام دوستان من یک کوئری برای محاسبه سود هفتگی حاصل از فاکتورهای فروش نوشتم اما در شرایطی بهم جواب درست نمیده، این کوئری من هست:
SELECT (dbo.SalesOrders.UnitSalesPrice - dbo.SalesOrders.UnitPurchasePrice) * dbo.SalesOrders.ProductQty AS TotalNetProfit,
InvoiceDate, CAST((Datediff(Day, '12/28/2018 00:00:00', InvoiceDate) - 1) / 7 AS INT) + 1 AS WeekNumber
FROM dbo.SalesInvoices Right outer JOIN
dbo.SalesOrders ON SalesInvoices.Id = dbo.SalesOrders.InvoiceId
WHERE InvoiceDate >= '12/28/2018 00:00:00' AND InvoiceDate <= '01/28/2019 23:59:00'

UNION
SELECT NULL as TotalNetProfit,NULL as Date,1 as WeekNumber
UNION
SELECT NULL,NULL,2
UNION
SELECT NULL,NULL,3
UNION
SELECT NULL,NULL,4
UNION
SELECT NULL,NULL,5

دوتا جدول دارم یکی به اسم SalesInvoices که مشخصات کلی و ثابت فاکتور رو در خودش ذخیره میکنه و یکی هم جدول SalesOrders که اقلام هر فاکتور در اون ذخیره میشن
حالا در کوئری بالا وقتی من این بخش از کوئری رو به تنهایی اجرا میگیرم نتیجه و حاصل جمع هر هفته رو که از روش محاسبه میکنم نتیجه درست رو بهم میده:
SELECT (dbo.SalesOrders.UnitSalesPrice - dbo.SalesOrders.UnitPurchasePrice) * dbo.SalesOrders.ProductQty AS TotalNetProfit,
InvoiceDate, CAST((Datediff(Day, '12/28/2018 00:00:00', InvoiceDate) - 1) / 7 AS INT) + 1 AS WeekNumber
FROM dbo.SalesInvoices Right outer JOIN
dbo.SalesOrders ON SalesInvoices.Id = dbo.SalesOrders.InvoiceId
WHERE InvoiceDate >= '12/28/2018 00:00:00' AND InvoiceDate <= '01/28/2019 23:59:00'

و اینم خروجیش:که حاصل جمع ها این مقدار میشن و درست هستش:

اما وقتی کوئری رو بصورت کامل (یعنی همون کوئری اول) اجرا میگیرم نتیجه درست نمیگیرم (به مقادیر هفته سوم و پنجم دقت کنید که با نتیجه قبلی مغایرت دارن):

کجای کوئری رو باید اصلاح کنم که نتیجه درست بگیرم؟ اون null هایی هم که توی کوئری گذاشتم به این خاطر هست که ممکنه یک یا چندین هفته هیچ فروشی نداشته باشیم برای همین باید به ازای اون هفته های بدون فروش، مقدار صفر رو برگردونم به همین دلیل از null ها استفاده کردم، اگر راه دیگه ای بلد هستین ممنون میشم کمک کنین