正确排序日期列

时间:2017-10-23 17:42:41

标签: sql reporting-services

我有以下查询返回我的数据,如下面的示例

Nov 1 2017
Nov 21 2017
Oct 29 2017
Oct 30 2017

我希望我的数据按原样返回

Oct 29 2017
Oct 30 2017
Nov 1 2017
Nov 21 2017

我在日期值上尝试了orderby子句,但我没有运气......

以下是我想要整合排序功能的完整查询。

SELECT  
    DISTINCT CONVERT(varchar(11),E1_INTEGRATE.DBO.ConvertJulianDateToStd(WLDRQJ)) AS 'Due date', 
    WLDOCO, 
    E1_INTEGRATE.DBO.ConvertJulianDateToStd(PDPDDJ), 
    PDTORG as 'Buyer', 
    PDDOCO, 
    'Supplier' = 
                 (SELECT 
                     ABALPH 
                  FROM ps_prod.proddta.F0101 
                  WHERE PHAN8 = ABAN8
                  ), 
    WLKITL

FROM ps_prod.proddta.F3112 -- Work Order Routing

INNER JOIN
    ps_prod.proddta.F4311 -- Purchase order detail
      ON    
        substring(WLRORN, patindex('%[^0]%',WLRORN), 8) = CAST(PDDOCO as VARCHAR(8)) 
        AND WLRKCO = PDKCOO 

INNER JOIN
    ps_prod.proddta.F4301
     ON
       PDDOCO = PHDOCO

INNER JOIN
    ps_prod.proddta.F57JTDT f1
     ON
      F4311.PDCNID = f1.JDDOCO
      AND f1.JDZZCAT5 = 30
      AND f1.JDZZFN5 = 20
      AND f1.JDZZFLDV = 'Yes'

INNER JOIN
   ps_prod.proddta.F57JTDT f2
    ON
     F4311.PDCNID = f2.JDDOCO
     AND f2.JDZZCAT5 = 30
     AND f2.JDZZFN5 = 70
     AND f2.JDZZFLDV = 'Yes'

WHERE
    DATEDIFF(DAY,GETDATE(),E1_INTEGRATE.DBO.ConvertJulianDateToStd(WLDRQJ) ) < 30
    AND RTRIM(WLRORN) > ' '
    AND E1_INTEGRATE.DBO.ConvertJulianDateToStd(WLDRQJ) > CONVERT(datetime,CONVERT(varchar(10),DATEADD(dd, -1, GETDATE()),101))
    AND PDAEXP = 0  -- Extended Price
    AND PDUOPN > 0  -- Unit open quantity
    AND PDNXTR = '400'

2 个答案:

答案 0 :(得分:0)

在查询结束时尝试此操作:

ORDER BY CONVERT(varchar, DueDate, 112)

<强>更新

实际上DueDate不是您想要订购的字段,它只是查询结尾的别名,当我查看您的查询时JulianDate似乎可以订购,所以您也可以试试这个:

ORDER BY WLDRQJ

答案 1 :(得分:-1)

选择
    DISTINCT REPLACE(CONVERT(varchar(12),E1_INTEGRATE.DBO.ConvertJulianDateToStd(WLDRQJ),107),',','')AS'截止日期'