所以我有一个非常棘手的问题,我无法弄明白。 我有一个查询显示以下2列。
---------------------------
3970131000-**2016-04-30** | CB90
3970429000-**2016-06-30** | CB90
3970429000-**2016-03-31** | CB90
--------------------------------
我几乎添加了两列[Customer#]和DATE。(= Lens) 我的问题是,如何对结果进行排序,以便查看列中的字符串DATE并按DESC顺序对其进行排序。
这将是我想要的输出:
---------------------------
3970429000-**2016-06-30** | CB90
3970131000-**2016-04-30** | CB90
3970429000-**2016-03-31** | CB90
--------------------------------
感谢您的帮助!这是我的查询供参考。
select [Customer #] + '-' + cast(CAST(DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,[Activation Date])+1,0)) AS date) as nvarchar) as Lens,
item AS PCAT
FROM [NasrWeb].[dbo].[LensBankInfo]
where [activation date]
between '2016-01-01' AND GETDATE()
group by [Customer #] + '-' + cast(CAST(DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,[Activation Date])+1,0)) AS date) as nvarchar), item
ORDER BY LENS desc
答案 0 :(得分:1)
如何使用right()
?
order by right(lens, 10)
答案 1 :(得分:1)
由于该字符串中的日期基本上是[Activation Date]
月份的最后一天,您可以对该列进行排序(在汇总后):
ORDER BY Max([Activation Date]) DESC
答案 2 :(得分:1)
首先,我不确定为什么你有这个小组,因为你没有聚合任何数据。如果您删除该组,您只需按订单排序即可 CAST(DATEADD(s,-1,DATEADD(mm,DATEDIFF(m,0,[激活日期])+ 1,0))AS日期)并使用desc
select [Customer #] + '-' + cast(CAST(DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0, [Activation Date])+1,0)) AS date) as nvarchar) as Lens,
item AS PCAT
FROM [NasrWeb].[dbo].[LensBankInfo]
where [activation date]
between '2016-01-01' AND GETDATE()
order by CAST(DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,[Activation Date])+1,0)) AS date)
如果您实际上正在聚合和计算某些内容但未将其包含在您的示例中,那么您可以将日期部分的公式添加到您的组中,因为它不会影响任何内容,然后按顺序排序。