فیلتر نتیجه Stored Procedure با استفاده از پارامتر
با سلام و احترام
من قبلا این پروسیجر رو نوشتم و درست عمل میکرد ولی حالا چند داده دو تا از جداول تغییر کرده فیلتر بر اساس مدل انجام نمیشه
الان خطایی ندارم و پروسیجر درست کار می کنه فقط مشکلی که هست اینه که قبلا بر اساس مدل فیلتر می کرد وقتی داده های جدول رو زیاد کردم (رکودهایی که با رنگ قرمز توی جداول نشون دادم) دیگه بر اساس مدل فیلتر نمیشه
جدول خودرو

CREATE PROCEDURE [dbo].[ProductionInventoryAnalysisReport]
@CarID INT = NULL,
@CarModel INT = NULL,
@FromDate DATETIME,
@ToDate DATETIME
AS
BEGIN
SET NOCOUNT ON;
DECLARE @StartDate DATETIME = DATEADD(d, DATEDIFF(d, 0, @FromDate), 0)
DECLARE @EndDate DATETIME = DATEADD(s, -1, DATEADD(d, 1, @ToDate))
IF @CarID IS NOT NULL AND @CarModel IS NOT NULL
SELECT
CarID,
CarTitle,
CarModels,
RepDate,
SUM(ValidQty) AS ValidQty,
SUM(QuarantineQty) AS QuarantineQty,
SUM(SecondRateQty) AS SecondRateQty
FROM
dbo.ProductionInventoryAnalysis INNER JOIN
dbo.Cars ON dbo.ProductionInventoryAnalysis.CarID = dbo.Cars.ID INNER JOIN
dbo.CarModel ON dbo.ProductionInventoryAnalysis.ModelID = dbo.CarModel.ID
WHERE
(CarID = @CarID) AND (CarModels = @CarModel) AND (RepDate BETWEEN @StartDate AND @EndDate)
GROUP BY CarID, CarTitle, CarModels, RepDate
ELSE
SELECT
CarID,
CarTitle,
CarModels,
RepDate,
SUM(ValidQty) AS ValidQty,
SUM(QuarantineQty) AS QuarantineQty,
SUM(SecondRateQty) AS SecondRateQty
FROM
dbo.ProductionInventoryAnalysis INNER JOIN
dbo.Cars ON dbo.ProductionInventoryAnalysis.CarID = dbo.Cars.ID INNER JOIN
dbo.CarModel ON dbo.ProductionInventoryAnalysis.ModelID = dbo.CarModel.ID
WHERE RepDate BETWEEN @StartDate AND @EndDate
GROUP BY CarID, CarTitle, CarModels, RepDate
END
جدول مدل

لطفا راهنمایی بفرمایید.
پاسخ هوش مصنوعی
برای حل مشکل فیلتر کردن بر اساس مدل در پروسیجر خود، ابتدا مطمین شوید که مقادیر ورودی شما (پارامترهای @CarID و @CarModel) با داده های موجود در جداول مطابقت دارد. همچنین ممکن است نیاز باشد که توجه بیشتری به نحوه مقایسه مقادیر داشته باشید. در اینجا چند نکته و تغییر ممکن با توجه به کد شما آورده شده است:
1. اطمینان حاصل کنید که مقادیر @CarModel و @CarID صحیح و متناسب با داده های جدول هستند.
2. در صورتی که می خواهید تمام مدل ها را در زمان جست وجو در نظر بگیرید (به جای فیلتر بر اساس مدل خاص)، می توانید بخشی از شرط WHERE را تغییر دهید.
برای مثال، در اینجا می توانید بررسی کنید که آیا فیلتر بر اساس @CarModel به درستی کار می کند یا نه:
IF @CarID IS NOT NULL AND @CarModel IS NOT NULL
BEGIN
SELECT
CarID,
CarTitle,
CarModels,
RepDate,
SUM(ValidQty) AS ValidQty,
SUM(QuarantineQty) AS QuarantineQty,
SUM(SecondRateQty) AS SecondRateQty
FROM
dbo.ProductionInventoryAnalysis
INNER JOIN dbo.Cars ON dbo.ProductionInventoryAnalysis.CarID = dbo.Cars.ID
INNER JOIN dbo.CarModel ON dbo.ProductionInventoryAnalysis.ModelID = dbo.CarModel.ID
WHERE
(CarID = @CarID) AND (CarModels = @CarModel) AND (RepDate BETWEEN @StartDate AND @EndDate)
GROUP BY CarID, CarTitle, CarModels, RepDate
END
ELSE
BEGIN
-- Remove the model filter to see if you get results
SELECT
CarID,
CarTitle,
CarModels,
RepDate,
SUM(ValidQty) AS ValidQty,
SUM(QuarantineQty) AS QuarantineQty,
SUM(SecondRateQty) AS SecondRateQty
FROM
dbo.ProductionInventoryAnalysis
INNER JOIN dbo.Cars ON dbo.ProductionInventoryAnalysis.CarID = dbo.Cars.ID
INNER JOIN dbo.CarModel ON dbo.ProductionInventoryAnalysis.ModelID = dbo.CarModel.ID
WHERE
RepDate BETWEEN @StartDate AND @EndDate
GROUP BY CarID, CarTitle, CarModels, RepDate
END
3. اگر هیچ نتیجه ای در صورت فیلتر شدن بر اساس @CarModel پیدا نمی شود، پیشنهاد می شود که یک SELECT ساده بدون هیچ شرطی انجام دهید تا بررسی کنید که آیا داده های مورد نظر در جدول وجود دارد یا خیر.
در نهایت، اگر تغییرات در جداول به شما اجازه نمی دهند تا مدل را به درستی فیلتر کنید، ممکن است لازم باشد که داده ها را دوباره بررسی کنید یا جست وجو را اصلاح نمایید.
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- حذف کامل یک رکورد در جدول ریلیشن شده
- مقایسه ساختار دو دیتابیس در Sql Server
- اشکال در ایجاد کلید خارجی در Sql Server
- تفاوت اوراکل و Sql Server چیست
- جابه جایی سطر و ستون در Sql Server
- استفاده از Stored Procedure در انتیتی فریم ورک code First
- آپدیت لیستی از رکوردها در Sql Server - آپدیت گروهی اطلاعات در Sql Server
- دلیل پرش 1000 تایی خودکار فیلد identity در Sql server
- مشکل نمایش ندادن Data Type موقع تایپ در Sql Server
- کار با تاریخ شمسی وساعت (استفاده از توابع )