在 ColdFusion 中,在查询了 MSSQL 数据库并使用QueryAddRow函数添加了几行之后,我需要通过对查询进行查询来重新排序查询。我需要的顺序要求我在 ORDER BY 子句中使用 CASE 表达式,如下所示:
<cfquery name="newquery" dbtype="query">
SELECT * FROM query
ORDER BY
CASE
WHEN var LIKE 'All' THEN 'Zz'
WHEN var LIKE '9%' THEN '0'
ELSE var
END, year
</cfquery>
这将返回一个错误:Error Executing Database Query. Caught an exception, type = Database
。我也尝试过使用QueryExecute。
如果我直接查询数据库,查询工作得很好,所以当我尝试对查询进行查询时只会收到错误。如果我删除 CASE 表达式并且只执行(...) ORDER BY var, year
查询的查询也可以正常工作,所以在我看来 CASE 在查询的查询中是不可能的。这是正确的,还是我应该能够以某种方式使用 CASE?
这是我需要重新排序的结构(在添加了三行之后)。显然,我已经删除了所有与手头问题无关的列。
year | var
2001 | 9-12
2002 | 9-12
2003 | 9-12
2001 | 12+
2002 | 12+
2003 | 12+
2001 | All
2002 | All
2003 | All
2000 | 9-12
2000 | 12+
2000 | All
如您所见,我使用 CASE 通过自定义排序对 var 列进行排序。我对可能完全绕过这个问题的建议持开放态度。
如果有不清楚的地方,请告诉我。