【问题标题】:A kind of sorting which i couldn't resolve一种我无法解决的排序
【发布时间】:2014-07-17 10:03:28
【问题描述】:

我有一个如下查询:

结果如下:

我想要做的是在顶部显示包(最后一个分析作业被添加到其中)。我不希望最后添加的包显示在顶部。我希望结果如下所示:

有什么办法吗?

【问题讨论】:

  • 什么意思“最后一个分析作业被添加到其中”?所需的顺序根本不清楚。
  • 如果我理解正确,ORDER BY PACKAGEID, ANALYSISJOBID
  • @astander: 那么想要的结果不正确。
  • 我的英语不是很好,我的意思是最后一个分析作业添加的包。最后一个分析作业被添加到“Su”包中。我希望所有属于“Su”包的分析作业都显示在顶部,就像上面的最后一张图片一样
  • @ErdemGundogdu:我知道,但我不知道你是如何检测到 last 的。没有日期时间列。顺便说一句,我假设您的意思是 with 而不是 which。旁注:将查询和示例数据添加为文本,然后我们可以复制粘贴列/表名,甚至将示例数据添加到 sql-fiddle 以测试我们的解决方案。另外,图片和链接最终will rot

标签: sql tsql sorting


【解决方案1】:

所以您想先订购ANALYSISJOBID 最大的包裹吗?您可以使用 CTE + MAX(ANALYSISJOBID) OVER (PARTITION BY PACKAGEID):

WITH CTE AS
(
   SELECT  MaxJob = MAX(ANALYSISJOBID) OVER (PARTITION BY PACKAGEID), t.*
   FROM dbo.TableName t
)
SELECT PACKAGENAME, PACKAGEID, ANALYSISJOBID
FROM CTE 
ORDER BY MaxJob DESC, ANALYSISJOBID DESC

【讨论】:

  • 是的,就是这样!非常感谢你,你救了我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-05
  • 2013-08-14
  • 2021-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多