我有以下代码:
SELECT COUNT(CASE WHEN Title LIKE '%Superintendent%' THEN 1 END) AS 'Bob',
COUNT(CASE WHEN Title LIKE '%Machine%' THEN 1 END) AS 'Control',
COUNT(CASE WHEN Title LIKE '%Estimator%' THEN 1 END) AS 'Estimator'
FROM pants;
当前结果如下:
Bob Control Estimator
230 550 1243
相反,我希望查询的结果视图中的列以降序排列:Estimator-> Control-> Bob
答案 0 :(得分:1)
不建议动态地弄乱结果集中列的顺序。相反,查询应具有一个结果集,其中包含一组高度可预测的(理想情况下是静态的)列。
我建议对列进行重新排序是在数据库返回结果集之后执行的所有 结果。
答案 1 :(得分:1)
SQL排序旨在对行进行排序,而不对列进行排序。为了更改输出中的列顺序,您需要对数据进行排序,然后构建一个动态查询以正确的顺序返回列。但是,如果这样的结果可以满足您的需求,那么只要做第一部分(对数据进行排序)就容易得多。
Name Total
Estimator 1243
Control 550
Bob 230
此查询可能看起来像这样(我的MySQL语法很生锈,但这应该很接近)
SELECT 'Bob' as Name, COUNT(CASE WHEN Title LIKE '%Superintendent%' THEN 1 END) AS Total From Pants
UNION ALL
SELECT 'Control' as Name, COUNT(CASE WHEN Title LIKE '%Machine%' THEN 1 END) AS Total From Pants
UNION ALL
SELECT 'Estimator' as Name, COUNT(CASE WHEN Title LIKE '%Estimator%' THEN 1 END) AS Total From Pants
ORDER BY Total desc;
答案 2 :(得分:0)
require tree
这将在行中提供所需的排序数据。然后服务层应该进行从行到列的转置。