MSSQL을 이용한 동적 쿼리입니다. 아래 소스와 같은 상황입니다.
처음 검색을 하면 a_viewyn의 값을 잘 출력을 하는데요.
동적 쿼리를 이용해서 원하는 값만 추출을 하고 싶은 경우에는 열 이름이 없다고 나오네요.
아무래도 별칭이라서 조건문 where 에 안 먹히는 것 같은데
이거 해결 하는 법 없나요?
가정에 무궁한 발전이 있기를 바랍니다.
아래는 jsp 앞단 선택 소스 입니다.
체크 박스를 선택 했을때 값이 넘어가게 됩니다.
<th >전시여부</th>
<td>
<form:checkbox path="psviewyn" label="전체" value="" class="noborder" />
<form:checkbox path="psviewyn" label="전시" value="Y" class="noborder" />
<form:checkbox path="psviewyn" label="미전시" value="N" class="noborder" />
</td>
아래는 ibatis 넘어온 값으로 동적쿼리가 실행 되는 곳 입니다.
<select id="selectBannerList" parameterClass="mallBanner" resultClass="mallBanner" remapResults="true">
SELECT
a.bannerseq AS bannerseq
,a.lgrp AS lgrp
,dbo.fn_codenm(a.banlocation) AS banlocation
,a.bantitle AS bantitle
,a.sort AS sort
,a.reguserid AS reguserid
,a.regdate AS regdate
,a.startdate AS startdate
,a.enddate AS enddate
,a.moduserid AS moduserid
,a.moddate AS moddate
,a.confyn AS confyn
, CASE WHEN b.sort = '10000552' THEN 'Y'
WHEN b.sort = '10000553' THEN 'Y'
WHEN b.sort = '10000554' THEN 'Y'
WHEN b.sort = '10000555' THEN 'Y'
WHEN b.sort = '10000556' THEN 'Y'
ELSE 'N'
END AS 'a_viewyn'
,a.muserid AS muserid
,a.mallconfdate AS mallconfdate
, CASE WHEN b.sort = '10000552' THEN '메인배너'
WHEN b.sort = '10000553' THEN '상단좌측'
WHEN b.sort = '10000554' THEN '상단우측'
WHEN b.sort = '10000555' THEN '하단좌측'
WHEN b.sort = '10000556' THEN '하단우측'
ELSE ''
END AS 'a_sort'
FROM dbo.T_MALL_BANNER_INFO a
left outer join dbo.T_MALL_BP_MAIN_INFO b
on a.muserid = b.muserid and a.bannerseq =b.bannerseq
WHERE 1=1
<isEqual property="temp" compareValue="10000011">
AND a.muserid = #muserid#
</isEqual>
<isNotEmpty prepend="AND" property="psviewyn">
CHARINDEX(#psviewyn#, a_viewyn)<![CDATA[>]]>0
</isNotEmpty>
<isNotEmpty prepend="AND" property="psconfyn">
CHARINDEX(#psconfyn#, a.confyn)<![CDATA[>]]>0
</isNotEmpty>
<include refid="support.sql.map.listPagingTail"/>
</select>