set @qry=@qry+char(13)+'union all ' set @qry=@qry+char(13)+'SELECT ' set @qry=@qry+char(13)+' a.sellerCode,' set @qry=@qry+char(13)+' a.materialcode, ' set @qry=@qry+char(13)+' a.storeCode, ' set @qry=@qry+char(13)+' a.stockinday, ' set @qry=@qry+char(13)+' dbo.uf_storeName(a.dealercode,a.storeCode) as storeName, ' set @qry=@qry+char(13)+' b.materialname, ' set @qry=@qry+char(13)+' FROM orders a inner join material b ' set @qry=@qry+char(13)+' on(a.dealercode=b.dealercode' set @qry=@qry+char(13)+' and a.materialcode=b.materialcode ' set @qry=@qry+char(13)+' AND a.orders_restrictCount<>b.restrictCount' set @qry=@qry+char(13)+' and b.isUse=''Y'') ' set @qry=@qry+char(13)+' WHERE a.dealerCode='''+@A_dealerCode+''' ' if(len(@A_SellerCode)>0) begin set @qry=@qry+char(13)+' AND a.sellerCode='''+@A_SellerCode+''' ' end if(len(@A_StoreCode)>0) begin set @qry=@qry+char(13)+' AND a.storeCode='''+@A_StoreCode+''' ' end
이 쿼리문하고 (생략한거입니다)
select dealerCode, storeCode, stockInDay
from orders
where dealerCode=@A_dealerCode
if(@A_storeCode != 'zz')
begin
and storeCode = @A_storeCode
end
이 쿼리문하고 차이가 뭐죠?
위에 쿼리문은 where안에 if를 쓸수있는데
밑에 쿼리는 사용이안됩니다..
"T-SQL문 형식으로 바꿔야한다" 라고 한정지으면 안됩니다.
원하는 기능을 구현하는데 있어서
SQL 로 구현하든, T-SQL 로 구현 하든 상관이 없습니다.
SELECT dealerCode , storeCode , stockInDay FROM orders WHERE dealerCode = @A_dealerCode AND ( (@A_storeCode = 'zz' ) -- 전체검색 OR (@A_storeCode != 'zz' AND storeCode = @A_storeCode) -- 부분검색 ) ;
SELECT dealerCode , storeCode , stockInDay FROM orders WHERE dealerCode = @A_dealerCode AND @A_storeCode = 'zz' -- 전체검색 UNION ALL SELECT dealerCode , storeCode , stockInDay FROM orders WHERE dealerCode = @A_dealerCode AND @A_storeCode != 'zz' -- 부분검색 AND storeCode = @A_storeCode ;