السلام عليكم ورحمة الله وبركاتة
في بعض الاحيان نريد تجار التصفية وهذا الكود يقوم بهذا علي كل من
select
where
group
having
لا اعرف الشرح جيدا ولكن ساترك الكود يتحدث بما اقصدة
اتمني ان يكون سهل الفهم
--Param with where declare @Val1 NVARCHAR(10) declare @Val2 INT --مثل بارسال قيم خالية SET @Val1=NULL SET @Val2=NULL select * from table1 WHERE ((col1= @Val1) or (@Val1 is null )) and ((Col2= @Val2) or (@Val2 is null )) ----OR select * from table1 WHERE CASE WHEN @Val1 IS NULL THEN null else Cal1 end =@Val1 and CASE WHEN @Val2 IS NULL THEN null else Cal2 end =@Val2 --مثل اخر بارسال قيم افتراضية SET @Val1=-1 SET @Val2=-1 select * from table1 WHERE ((col1= @Val1) or (@Val1= -1 )) and ((Col2= @Val2) or (@Val2= -1 )) ----OR select * from table1 WHERE CASE WHEN @Val1=-1 THEN -1 else Cal1 end =@Val1 and CASE WHEN @Val2=-1 THEN -1 else Cal2 end =@Val2 -------------------------------------- --Param with group + having declare @Val1 NVARCHAR(10) --مثل بارسال قيم خالية SET @Val1=NULL select case when @Val1 is NULL then NULL else Col1 end as 'sCal1', SUM(case when Cal2=4 then 1 else 0 end) AS 'nCal2' from table1 group by case when @Val1 is NULL then NULL else Col1 end having case when @Val1 is NULL then NULL else Col1 end =@Val1
وفققكم الله
