Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 主查询中order by子句的三元运算符_Java_Sql_Jasper Reports - Fatal编程技术网

Java 主查询中order by子句的三元运算符

Java 主查询中order by子句的三元运算符,java,sql,jasper-reports,Java,Sql,Jasper Reports,我正在开发struts 2 web应用程序,其中 我有一个JasperReports报告(jrxml),其中有一个主查询 <parameter name="getOrder" class="java.lang.String"> <defaultValueExpression><![CDATA[]]></defaultValueExpression> </parameter> <queryString> <

我正在开发struts 2 web应用程序,其中
我有一个JasperReports报告(jrxml),其中有一个主查询

<parameter name="getOrder" class="java.lang.String">
    <defaultValueExpression><![CDATA[]]></defaultValueExpression>
</parameter>
<queryString>
    <![CDATA[select USER_ID, USER_NAME,CURRENT_ADDRESS,CURRENT_TOWN,CURRENT_POSTAL_CODE,CURRENT_COUNTRY,USER_ADDRESS group by USER_ID, USER_NAME,CURRENT_ADDRESS,CURRENT_TOWN,CURRENT_POSTAL_CODE,CURRENT_COUNTRY,USER_ADDRESS order by $P!{getOrder}, USER_ID]]>
</queryString>
这里,pdfBean.getManageOrder()将从我将在报告中传递的
标记中为我提供字符串值

现在,根据在“getOrder”中选择的值,我需要用相应的数据替换上面查询字符串中的数据

sql Order by子句取决于如下所选的值

p{getOrder}.equals(“1”)?“用户名”:$p{getOrder}.equals(“2”)?“当前地址”:$p{getOrder}.equals(“3”)?“当前城镇”:$p{getOrder}.equals(“4”)?“当前邮政编码”:$p{getOrder}.equals(“5”)?“国家”:“

如果选择值3,则查询应如下所示

<select name="FormBean.orderByField" id="orderByField">
                                <option value='1'
                                    <s:if test="FormBean.orderByField == 1">selected="selected"</s:if>>
                                    <fmt:message key="name" />
                                </option>
                                <option value='2'
                                    <s:if test="FormBean.orderByField == 2">selected="selected"</s:if>>
                                    <fmt:message key="current address" />
                                </option>
                                <option value='3'
                                    <s:if test="FormBean.orderByField == 3">selected="selected"</s:if>>
                                    <fmt:message key="user address" />
                                </option>
                                <option value='4'
                                    <s:if test="FormBean.orderByField == 4">selected="selected"</s:if>>
                                    <fmt:message key="postal code" />
                                </option>
                                <option value='5'
                                    <s:if test="FormBean.orderByField == 5">selected="selected"</s:if>>
                                    <fmt:message key="country" />
                                </option>

 </select>
  <queryString>
    <![CDATA[select USER_ID, USER_NAME,CURRENT_ADDRESS,CURRENT_TOWN,CURRENT_POSTAL_CODE,CURRENT_COUNTRY,USER_ADDRESS group by USER_ID, USER_NAME,CURRENT_ADDRESS,CURRENT_TOWN,CURRENT_POSTAL_CODE,CURRENT_COUNTRY,USER_ADDRESS order by **CURRENT_TOWN**, USER_ID]]>
    </queryString>


我希望它在JR报告(jrxml)中完成。pdf报告将根据在屏幕的选择框中选择的值进行排序

case $P{getOrder}
WHEN 1 THEN 'USER_NAME' 
WHEN 2 THEN 'CURRENT_ADDRESS' 
WHEN 3 THEN 'CURRENT_TOWN' 
ELSE ''
END

你们的问题是什么?我如何在主查询中的ORDERBY子句中使用三元运算符?是的。您可以使用参数,例如:您可以在参数表达式中使用三元运算符。带查询的示例参数是yes。它很有用。但在我的例子中,我不想直接替换值的数据(硬编码),但我想在jasperReport的报告中仅基于屏幕上选择的值(1,2,3,4,5)使用条件语句,即(三元运算符),然后使用$P按顺序子句使用它!{paramName}语法是这样的:$P{getOrder}.equals(“1”)?“USER_NAME”:$P{getOrder}.equals(“2”)?“CURRENT_ADDRESS”:$P{getOrder}.equals(“3”)?“CURRENT_TOWN”:$P{getOrder}.equals(“4”)?“CURRENT_邮政编码”:$P{getOrder}.equals(“5”)?“COUNTRY:”用于jasper报告中的order条款您是否尝试在jasper报告中使用case?@Alex,我为SQL语句提供了这个选项,但它被要求提供JasperReports。谢谢提醒。
case $P{getOrder}
WHEN 1 THEN 'USER_NAME' 
WHEN 2 THEN 'CURRENT_ADDRESS' 
WHEN 3 THEN 'CURRENT_TOWN' 
ELSE ''
END