当前位置: 首页 > 知识库问答 >
问题:

主查询中按子句排序的三元运算符

越欣怡
2023-03-14

我正在开发struts 2 web应用程序,其中< br >我有一个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>

在JSP中,我有一个屏幕,它有<code>

<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>

我需要按选择选项中选择的选项排序 pdf 格式。所以我做的是:我创建了一个哈希映射i,我得到了我在选择选项中选择的值

jasperParameter.put("getOrder", pdfBean.getManageOrder());

在这里pdfBean.get管理命令()将从中给我字符串值

现在,根据在“getSO”中选择的值,我需要将上述查询中的数据替换为适当的数据

sql Order by子句取决于这样选择的值

$P{get订单}. equals("1")?"USER_NAME":$P{getord}. equals("2")?"CURRENT_ADDRESS":$P{getord}. equals("3")?"CURRENT_TOWN":$P{getord}. equals("4")?"CURRENT_POSTAL_CODE":$P{getord}. equals("5")?"COUNTRY":"

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

  <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报告中完成,以便根据在屏幕的选择框中选择的值进行排序


共有1个答案

罗翔
2023-03-14

请尝试使用此用例而不是三元运算符:

case $P{getOrder}
WHEN 1 THEN 'USER_NAME' 
WHEN 2 THEN 'CURRENT_ADDRESS' 
WHEN 3 THEN 'CURRENT_TOWN' 
ELSE ''
END
 类似资料:
  • 我有一篇有三个元域的帖子。 我想查询这个类别,并根据其中一个的元字段值对帖子进行排序。我现在使用的参数是: 其中times是元字段的名称。上面的代码没有返回任何内容。

  • 问题内容: 我想知道是否有按IN()子句中的值顺序进行排序的方法(可能是一种更好的方法)。 问题是我有2个查询,一个查询获取所有ID,第二个查询获取所有信息。第一个创建我要第二个排序的ID的顺序。这些ID以正确的顺序放入IN()子句中。 因此,它类似于(极其简化): 问题在于第二个查询不会以将ID放入IN()子句中的顺序来返回结果。 我发现的一种解决方案是将所有ID放入具有自动递增字段的临时表中,

  • 三元运算符 三元运算符 ? 应该只用在它能让代码更加清楚的地方。 一个条件语句的所有的变量应该是已经被求值了的。类似 if 语句,计算多个条件子句通常会让语句更加难以理解。或者可以把它们重构到实例变量里面。 推荐: result = a > b ? x : y; 不推荐: result = a > b ? x = c > d ? c : d : y; 当三元运算符的第二个参数(if 分支)返回和条

  • 问题内容: 我创建了一个存储过程,我想在其中添加替代的order by子句。问题是查询在“无效的列名’aantal regels’”上失败 这是我现在的查询。 希望有人可以帮助我! 问题答案: 您不能以这种方式按别名排序。 第一种选择是重复代码。注意:仅仅因为重复代码,SQL引擎就不会天真地再次执行它,而是重用了结果。 或全部使用子查询…

  • 问题内容: 我正在从具有整数id值的大型表(数百万行)中选择一组帐户记录。从某种意义上说,查询是最基本的。我正在做的是建立一个大型的逗号分隔列表,并将其作为“ in”子句传递到查询中。现在,结果是完全无序的。我想做的是按“ in”子句中的值顺序返回结果。 我想我将不得不建立一个临时表并进行联接,这是我想避免的,但可能无法做到。 有什么想法吗?现在,由于我们正试图限制输出大小,每个查询的大小上限为6

  • 问题内容: 我想知道是否有按IN()子句中的值顺序进行排序的方法(可能是一种更好的方法)。 问题是我有2个查询,一个查询获取所有ID,第二个查询获取所有信息。第一个创建我要第二个排序的ID的顺序。这些ID以正确的顺序放入IN()子句中。 因此,它类似于(极其简化): 问题在于第二个查询不会以将ID放入IN()子句中的顺序来返回结果。 我发现的一种解决方案是将所有ID放入具有自动递增字段的临时表中,