从 QoQ 结果列按字母顺序排序

Sorting in alphabetical order from QoQ result column

我有一个从 SP 返回的结果集,然后在 QoQ 中对其进行操作。结果以 ABCabc 顺序显示。我希望它们按 AaBbCc 顺序排列。

例如,假设 "names" 列包含值 "Steve, Andy, anuj, bill, Mike" 。当我按名称排序时,结果按以下顺序列出:

而不是我想要的顺序,即:

解决此问题的一种方法是 select 强制它降低或升高的列,然后按该列排序。这个例子在 CF9 和 CF11 中对我有用。请原谅快速和粗略的代码,但只是将其鞭打以显示排序工作:

<cfscript>
    qry = QueryNew("TESTING");
    QueryAddRow(qry); QuerySetCell(qry, "TESTING", "A");
    QueryAddRow(qry); QuerySetCell(qry, "TESTING", "B");
    QueryAddRow(qry); QuerySetCell(qry, "TESTING", "C");
    QueryAddRow(qry); QuerySetCell(qry, "TESTING", "a");
    QueryAddRow(qry); QuerySetCell(qry, "TESTING", "b");
    QueryAddRow(qry); QuerySetCell(qry, "TESTING", "c");
</cfscript>

<cfquery name="qry2" dbtype="query">
    SELECT TESTING, LOWER(TESTING) AS TMP FROM qry ORDER BY TMP</cfquery>

<cfoutput query="qry2">
    #TESTING#<br />
</cfoutput>

这给了我以下输出:

A
a
B
b
C
c

如果您改为通过不执行 lower 或 upper 来执行订单,您最终会得到类似于您描述的问题的输出:

<cfquery name="qry3" dbtype="query">
    SELECT TESTING, LOWER(TESTING) AS TMP FROM qry ORDER BY TESTING</cfquery>

<cfoutput query="qry3">
    #TESTING#<br />
</cfoutput>

在浏览器中输出:

A
B
C
a
b
c