با سلام.من یه combobox دارم که دارای مقادیر برگشتی کسر شده مقدارش 1 برگشتی کسر نشده مقدارش 2 و فقط برگشتی مقدارش صفر هست.تو جدولم فقط به مقادیرش دسترسی دارم حالا میخام جدولم رو بر اساس برگشتی کسرشده و برگشتی کسر نشده و فقط برگشتی فیلتر کنم.لطفا راهنمایی بفرمائید.اینم کوئری کلی.
declare @OD_CD varchar(17) ,@OD_CD2 varchar(17)
Declare @GroupCust_Cd SmallInt ,@GroupCust_Cd2 Smallint
Declare @Cust_Cd Varchar(10) ,@Cust_Cd2 Varchar(10)
Declare @Fact_Date Char(8) ,@Fact_Date2 Char(8)
Declare @Stock_cd TinyInt ,@Stock_cd2 TinyInt
Declare @GroupOd_Cd TinyInt ,@GroupOd_Cd2 TinyInt
Declare @Flag TinyInt ,@Flag2 TinyInt ,@Flag3 TinyInt ,@Flag4 TinyInt
Declare @IO SmallInt
Declare @Price_Unit Tinyint
Declare @PRODUCER varchar(30)
Declare @Acc_Year SmallInt
Declare @NAME varchar(30)
Declare @Zarib Smallint
Set @GroupCust_Cd=NULL
Set @GroupCust_Cd2=NULL
Set @fact_date = '" + txtDate1.Text + @"'
Set @fact_date2 = '" + txtDate2.Text + @"'
SET @Price_Unit=NULL
Set @stock_cd ='" + textBox9.Text + @"'
Set @Stock_cd2 =15
Set @Flag=Null
Set @acc_year ='" + txtYear.Text + @"'
Set @PRODUCER='" + cmbxStatus.SelectedIndex.ToString() + @"'
If IsNull(@IO,0)=1 Set @Zarib=1 Else Set @Zarib=-1
Set @Flag2=Null
Set @Flag3=Null
Set @Flag4=Null
If @Flag=2 Set @Flag2=4
If @Flag=12 Set @Flag2=17
If @Flag Is Null Begin
Set @Flag=2
Set @Flag2=4
Set @Flag3=12
Set @Flag4=17
End
Select A.Od_Cd as 'کدکالا',A.Od_Nm as 'نام کالا',O.Vazn as 'وزن کالا',O.PRODUCER as 'تولید کننده'
,Sum(-1*A.IO*quantity) Qnt
,Sum(@Zarib*A.IO*A.quantity*O.vazn)/1000 TTlVazn
,Sum(Round(@Zarib*A.IO*A.quantity*A.Un_Prc,0)) TtlPrc
From S_Vw_Article A
Left Outer Join S_ODS O On A.Od_Cd = O.Od_Cd
Where (A.Acc_Year=@Acc_Year)
And
( (A.Flag In (@Flag,@Flag2,@Flag3,@Flag4))
Or ((@Flag=2) And (A.Flag=5 And A.TypeRH_Cd=10))
)
And (
(@Stock_cd Is Null)
Or((@Stock_cd = @Stock_cd2) And (A.Stock_cd=@Stock_cd))
Or((@Stock_cd <>@Stock_cd2) And (A.Stock_cd Between @Stock_cd And @Stock_cd2))
)
And (
(@GroupCust_Cd Is Null)
Or((@GroupCust_CD = @GroupCust_Cd2) And (A.GroupCust_CD = @GroupCust_Cd))
Or((@GroupCust_Cd <>@GroupCust_Cd2) And (A.GroupCust_Cd Between @GroupCust_Cd And @GroupCust_Cd2))
)
And (
(@Cust_Cd Is Null)
Or((@Cust_Cd = @Cust_Cd2) And (A.Cust_Cd = @Cust_Cd))
Or((@Cust_Cd <>@Cust_Cd2) And (A.Cust_Cd Between @Cust_Cd And @Cust_Cd2))
)
And (
(@Fact_Date Is Null)
Or((@Fact_Date = @Fact_Date2) And (A.Fact_Date = @Fact_Date))
Or((@Fact_Date <>@Fact_Date2) And (A.Fact_Date Between @Fact_Date And @Fact_Date2))
)
And (
(@GroupOd_Cd Is Null)
Or((@GroupOd_Cd = @GroupOd_Cd2) And (A.GroupOd_Cd = @GroupOd_Cd))
Or((@GroupOd_Cd <>@GroupOd_Cd2) And (A.GroupOd_Cd Between @GroupOd_Cd And @GroupOd_Cd2 ))
)
And (
(@Od_Cd Is Null)
Or((@Od_Cd = @Od_Cd2) And (A.Od_Cd = @Od_Cd))
Or((@Od_Cd <>@Od_Cd2) And (A.Od_Cd Between @Od_Cd And @Od_Cd2 ))
)
And (A.Kind_Cd<>3)
And (IsNull(@IO,0)=0 Or A.IO=@IO)
AND (@Price_Unit IS NULL OR A.PRICE_UNIT=@Price_Unit)
" + Group + @"
" + havale + @"
Group BY A.Od_Cd,A.Od_Nm,O.Vazn,O.PRODUCER
Order BY A.Od_Cd
کدهاتون مشخص و خونا نیست لطفا مجددا ارسال کنید ولی اینبار کدها رو در قسمت code که در نوار بالای Textareaی ارسال پاسخ قرار داره بگذارید.
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)