开发者社区> 问答> 正文

订单记录按月份名称

0

我想按月份名称对结果进行排序,但是在sql server中没有得到排序。

我的查询:

select DATEname(month,signdate) as month1, 
       COUNT(contractid) as noofcontracts, sum(loanamt) as totalloan ,
       min(loanamt) as minloan 
from contracts
group by DATEname(month,signdate) order by DATEname(month, signdate);

我已经尝试使用datepart函数,但是它给出了错误

select DATEname(month,signdate) as month1, 
      COUNT(contractid) as noofcontracts, sum(loanamt) as totalloan ,
      min(loanamt) as minloan 
from contracts
group by DATEname(month,signdate)
order by DATEPART(m,signdate) ;

错误:ORDER BY子句中的“ contracts.signdate”列无效,因为它既不在聚合函数中也不在GROUP BY子句中。

我得到的输出:

month   count loan_amt min_loan
April     2    14998    4999
February  1    8189     8189
June      5    133645   2599
21947年5月2日10048

所需的输出:2月的记录应该排在第一位,依此类推。

请帮助。

展开
收起
祖安文状元 2020-01-03 16:31:42 501 0
1 条回答
写回答
取消 提交回答
  • 尝试对以下项使用聚合函数order by:

    order by min(signdate);
    
    

    或者,在中包含月份号group by:

    group by datename(month, signdate), month(signdate)
    order by month(signdate)
    
    

    请注意,查询中的月份中没有年份,可以是过滤器也可以是group by表达式。这通常表明查询逻辑存在问题。

    2020-01-03 16:31:58
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载