【问题标题】:Whats wrong with the following date sort query以下日期排序查询有什么问题
【发布时间】:2015-08-10 14:21:30
【问题描述】:

我正在使用以下查询对输出进行排序。它在某些情况下有效,但不是全部。给定的输出图片。任何建议为什么?请任何替代品。

Select 
    'playing' As activity,
    max(ad.xDate) As xDate,
    Isnull(sum(t.TimePerDay), 0) As TimePerDay 
From    
    AllDates As ad With (Nolock) 
Left Join 
    @test As t On ad.xDate = t.date
Group By
    datepart(wk, ad.xDate)
Order By
    YEAR(datepart(wk, ad.xDate)) DESC, MONTH(datepart(wk, ad.xDate)) DESC, DAY(datepart(wk, ad.xDate))

【问题讨论】:

  • YEAR(datepart(...)) 没有任何意义,datepart 返回一个INT,您无法提取YEARMONTH
  • 任何替代解决方案
  • 不是不了解你想要的结果
  • 我想对其进行排序。戈登是对的。

标签: sql sql-server sql-server-2008 sql-server-2005 sql-server-2012


【解决方案1】:

为什么要在获取年份和月份之前提取一周?

我想你想要:

ORDER BY MIN(ad.xDate) DESC

这将在每一行上按任意日期排序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多