簡體   English   中英

如何用日期分組對dd / mm / yyyy格式排序?

[英]How to sort dd/mm/yyyy format with group by dates?

SELECT CONVERT(NVARCHAR(15), TransDate, 103)  AS TransDate, 
       Isnull(Sum(CONVERT(INT, Amount)), '0') AS Amount 
FROM   HMS_DiagnosisTransactions 
WHERE  TransDate BETWEEN '05/01/2015' AND '07/24/2015' 
GROUP  BY CONVERT(NVARCHAR(15), TransDate, 103) 
ORDER  BY CONVERT(NVARCHAR(15), TransDate, 103) 

它顯示像

20/05/2015
20/06/2015
21/05/2015
22/07/2015

但我想要

20/05/2015
21/05/2015
20/06/2015
22/07/2015

TransDate包括在Group By (截斷時間),然后可以在Order By使用它:

SELECT CONVERT(NVARCHAR(15), TransDate, 103)  AS TransDate, 
       Isnull(Sum(CONVERT(INT, Amount)), '0') AS Amount 
FROM   HMS_DiagnosisTransactions 
WHERE  TransDate BETWEEN '05/01/2015' AND '07/24/2015' 
GROUP  BY CONVERT(NVARCHAR(15), TransDate, 103), DATEADD(dd, DATEDIFF(dd, 0, TransDate), 0) 
ORDER BY DATEADD(dd, DATEDIFF(dd, 0, TransDate), 0) 

即使在SQL-Server 2005及更低版本中,此方法也有效。 2008年引入了沒有時間部分的Date數據類型。 然后,您只需將其轉換為Date

SELECT CONVERT(NVARCHAR(15), TransDate, 103)  AS TransDate, 
       Isnull(Sum(CONVERT(INT, Amount)), '0') AS Amount 
FROM   HMS_DiagnosisTransactions 
WHERE  TransDate BETWEEN '05/01/2015' AND '07/24/2015' 
GROUP  BY CONVERT(NVARCHAR(15), TransDate, 103), CAST(TransDate as Date) 
ORDER  BY CAST(TransDate as Date) 

我假設分組實際上是有目的的,因此您需要使用分組的值。 將字符串轉換回日期:

ORDER BY CONVERT(DATETIME, CONVERT(NVARCHAR(15), TransDate, 103), 103)

也許您可以將年/月/日的值聲明為DATEPART ,也可以按它們分組,同時在派生表中進行所有這些操作。 然后,只需重新查詢即可。

SELECT T.TransDate, T.Amount
FROM (
    SELECT CONVERT(NVARCHAR(15), TransDate, 103) AS TransDate
        , COALESCE(SUM(CONVERT(INT, Amount)), '0') AS Amount
        , DATEPART(DD, TransDate) AS DD
        , DATEPART(MM, TransDate) AS MM
        , DATEPART(YY, TransDate) AS YY
    FROM HMS_DiagnosisTransactions
    WHERE TransDate BETWEEN '05/01/2015' AND '07/24/2015'
    GROUP BY CONVERT(NVARCHAR(15), TransDate, 103)
        , DATEPART(DD, TransDate)
        , DATEPART(MM, TransDate)
        , DATEPART(YY, TransDate)
    ) AS T
ORDER BY T.YY, T.MM, T.DD;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM