I've dynamic SQL as following,declare @icNo varchar(100)declare @payerNme varchar(300)declare @kodAmil varchar(100)set @payerNme='sharul'set @kodAmil='000100'declare @SQL varchar(max)SELECT @SQL = 'select t1.sysReceiptNo, t3.[icNo (Baru)] as icNo, upper(t3.nme) as payerNme,t5.descrp as daerahKutipan, upper(t4.nme) as amilNme, t6.descrp as paymentMethod,t1.paymentDte from paymentH t1 inner join paymentItem t2on t1.idx=t2.paymentHinner join payer t3 on t1.payer=t3.idxinner join amil t4 on t1.amil=t4.idxinner join daerahKutipan t5 on t1.daerahKutipan=t5.idxinner join paymentMethod t6 on t1.paymentMethod=t6.idx' if @icNo is null and @payerNme is null and @kodAmil is nullBegin SELECT @SQL = @SQLEndelseBegin SELECT @SQL = @SQL + ' where 'Endif @icNo is not nullBegin SELECT @SQL = @SQL + ' t3.[icNo (Baru)]=''' + @icNo + ''''Endif @payerNme is not nullBegin SELECT @SQL = @SQL + ' t3.nme like ''%' + @payerNme + '%'''Endif @kodAmil is not nullBegin SELECT @SQL = @SQL + ' t4.code=''' + @kodAmil + ''''End--Exec ( @SQL)print @SQL
So, my result as following,select t1.sysReceiptNo, t3.[icNo (Baru)] as icNo, upper(t3.nme) as payerNme,t5.descrp as daerahKutipan, upper(t4.nme) as amilNme, t6.descrp as paymentMethod,t1.paymentDte from paymentH t1 inner join paymentItem t2on t1.idx=t2.paymentHinner join payer t3 on t1.payer=t3.idxinner join amil t4 on t1.amil=t4.idxinner join daerahKutipan t5 on t1.daerahKutipan=t5.idxinner join paymentMethod t6 on t1.paymentMethod=t6.idx where t3.nme like '%sharul%' t4.code='000100'
if I changeif @kodAmil is not nullBegin SELECT @SQL = @SQL + ' t4.code=''' + @kodAmil + ''''End
toif @kodAmil is not nullBegin SELECT @SQL = @SQL + ' and t4.code=''' + @kodAmil + ''''End
So, the result as following,select t1.sysReceiptNo, t3.[icNo (Baru)] as icNo, upper(t3.nme) as payerNme,t5.descrp as daerahKutipan, upper(t4.nme) as amilNme, t6.descrp as paymentMethod,t1.paymentDte from paymentH t1 inner join paymentItem t2on t1.idx=t2.paymentHinner join payer t3 on t1.payer=t3.idxinner join amil t4 on t1.amil=t4.idxinner join daerahKutipan t5 on t1.daerahKutipan=t5.idxinner join paymentMethod t6 on t1.paymentMethod=t6.idx where t3.nme like '%sharul%' and t4.code='000100'
and it's okBUTIT'S NOT OK, if my dynamic SQL as following,declare @icNo varchar(100)declare @payerNme varchar(300)declare @kodAmil varchar(100)set @kodAmil='000100' /*only @kodAmil will pass*/declare @SQL varchar(max)SELECT @SQL = 'select t1.sysReceiptNo, t3.[icNo (Baru)] as icNo, upper(t3.nme) as payerNme,t5.descrp as daerahKutipan, upper(t4.nme) as amilNme, t6.descrp as paymentMethod,t1.paymentDte from paymentH t1 inner join paymentItem t2on t1.idx=t2.paymentHinner join payer t3 on t1.payer=t3.idxinner join amil t4 on t1.amil=t4.idxinner join daerahKutipan t5 on t1.daerahKutipan=t5.idxinner join paymentMethod t6 on t1.paymentMethod=t6.idx' if @icNo is null and @payerNme is null and @kodAmil is nullBegin SELECT @SQL = @SQLEndelseBegin SELECT @SQL = @SQL + ' where 'Endif @icNo is not nullBegin SELECT @SQL = @SQL + ' t3.[icNo (Baru)]=''' + @icNo + ''''Endif @payerNme is not nullBegin SELECT @SQL = @SQL + ' t3.nme like ''%' + @payerNme + '%'''Endif @kodAmil is not nullBegin SELECT @SQL = @SQL + ' and t4.code=''' + @kodAmil + ''''End--Exec ( @SQL)print @SQL
Please help me to adjust my dynamic sql. As a result, I can pass1. no parameter2. @icNo only3. @payerNme only4. @kodAmil only5. @icNo and @payerNme only6. @icNo and @kodAmil only7. @payerNme and @kodAmil only8. and so on ....