【问题标题】:Order By chronological order FOR XML PATH按时间顺序排序 FOR XML PATH
【发布时间】:2014-08-27 11:32:12
【问题描述】:

我无法按时间顺序在 FOR XML Path 中订购季度和年份。虽然我订购它不起作用。有人可以告诉我哪里出错了

 SELECT DISTINCT 
    LON.DATE
    ,STUFF((SELECT DISTINCT   ',' + 'Q' + (COALESCE(CAST(LON1.QTR AS Varchar(10))+ '/ ', '') + + CAST(LON1.YR AS Varchar(10))) 
           FROM LOANTABLE LON1
           WHERE LON.DATE = LON1.DATE 
           FOR XML PATH('')),1,1,'') AS QuarterAndYear
FROM 
   LOANTABLE LON
GROUP BY 
   LON.DATE
ORDER BY 
   QuarterAndYear

这是结果数据:

Date               QuarterAndYear
2011-04-01         Q1/ 2008,Q3/ 2009,Q1/ 2010,Q2/ 2009,Q4/ 2009,Q2/ 2008,Q2/ 2010,Q3/ 2010,Q3/ 2008,Q4/ 2008,Q4/ 2010,Q1/ 2011,Q2/ 2011,Q1/ 
2009 2010-12-01    Q1/ 2010,Q2/ 2010,Q3/ 2010,Q4/ 
2010 2011-07-01    Q1/ 2010,Q3/ 2011,Q2/ 2010,Q3/ 2010,Q4/ 2010,Q1/ 2011,Q2/ 
2011 2012-01-09    Q1/ 2010,Q3/ 2011,Q2/ 2010,Q3/ 2010,Q4/ 2011,Q4/ 2010,Q1/ 2011,Q2/ 
2011 2011-07-08    Q1/ 2010,Q4/ 2009,Q2/ 2010,Q3/ 2010,Q4/ 2010,Q1/ 2011 –

【问题讨论】:

  • 你能展示一些示例数据吗?

标签: sql-server sql-server-2008 sql-order-by


【解决方案1】:

使用以下格式:

 SELECT DISTINCT LON.DATE
                ,STUFF((SELECT DISTINCT   ',' + 'Q' + (COALESCE(CAST(z.QTR AS Varchar(10))+ '/ ', '') + + CAST(z.YR AS Varchar(10))) 
                       FROM (SELECT TOP 100 PERCENT QTR, YR
                             FROM LOANTABLE LON1
                             WHERE LON.DATE = LON1.DATE
                             ORDER BY LON1.QTR DESC
                             )z
                       FOR XML PATH('')),1,1,'') AS QuarterAndYear
FROM LOANTABLE LON
GROUP BY LON.DATE
ORDER BY QuarterAndYear

【讨论】:

  • 它仍然无法正常工作。自我的日期 LON.DATE 字段是仅日期字段并且没有任何时间以来,它会随机显示季度和年份。
  • 这是我得到的数据'2011-04-01 Q1/ 2008,Q3/ 2009,Q1/ 2010,Q2/ 2009, Q4/2009,Q2/2008,Q2/ 2010,Q3/ 2010,Q3/ 2008,Q4/ 2008,Q4/ 2010,Q1/ 2011,Q2/ 2011,Q1/ 2009 2010-12-01 Q1/ 2010,Q2/ 2010,Q3/ 2010,Q4/ 2010 2011-07-01 Q1/ 2010,Q3/ 2011,Q2/ 2010,Q3/ 2010,Q4/ 2010,Q1/ 2011,Q2/ 2011 2012-01-09 Q1/ 2010,Q3/ 2011,Q2/ 2010,Q3/ 2010,Q4/ 2011,Q4/ 2010,Q1/ 2011,Q2/ 2011 2011-07-08 Q1/ 2010,Q4/ 2009,Q2/ 2010,Q3/ 2010,Q4/ 2010,Q1/ 2011'
  • @suryabhai。您希望对数据进行何种排序。
  • 我现在在结果集中得到的数据是这样的-Q1/2010,Q2/2009,Q3/2014。实际结果应该是有序的,如Q3/2014,Q1 /2010,Q2/2009。应该按时间顺序排列。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-16
  • 1970-01-01
  • 2016-03-20
  • 1970-01-01
  • 1970-01-01
  • 2020-10-16
相关资源
最近更新 更多