按日期分组和 SUM int - 日期格式和顺序

Group By Date and SUM int - Date formatting and Order

我正在尝试获取一天销售数量的总和。我需要按日期排序的结果。下面的查询给出了我需要的确切结果,只是日期格式不符合我的需要。

SELECT  CAST(Datetime AS DATE) AS 'date', SUM(quantity) as total_quantity
FROM Invoice_Itemized ii
INNER JOIN Invoice_Totals it ON it.Invoice_Number = ii.Invoice_Number
WHERE ii.ItemNum = '4011'
AND it.datetime > '05/15/2015'
GROUP BY CAST(Datetime AS DATE)

SELECT DATENAME(MM, datetime) + ' ' + CAST(DAY(datetime) AS VARCHAR(2)) AS [DD Month], SUM(quantity) as total_quantity
FROM Invoice_Itemized ii
INNER JOIN Invoice_Totals it ON it.Invoice_Number = ii.Invoice_Number
WHERE ii.ItemNum = '4011'
AND it.datetime > '05/15/2015'
GROUP BY DATENAME(MM, datetime) + ' ' + CAST(DAY(datetime) AS VARCHAR(2))

热门查询的结果:

  1. 2015-05-15 91.43
  2. 2015-05-16 84.77

底部查询的结果:

  1. 6 月 1 日 128.34
  2. 6 月 10 日 85.06

顶部查询按我需要的顺序为我提供了我需要的信息。 底部查询为我提供了我需要的日期格式,但顺序错误。

如果您确实需要应用不同的格式,您可以使用派生的 table:

select 
    DATENAME(MM, [date]) + ' ' + CAST(DAY([date]) AS VARCHAR(2)) AS [DD Month], 
    total_quantity 
from 
(
    SELECT  CAST([Datetime] AS DATE) AS [date], SUM(quantity) as total_quantity
    FROM Invoice_Itemized ii
    INNER JOIN Invoice_Totals it ON it.Invoice_Number = ii.Invoice_Number
    WHERE ii.ItemNum = '4011'
    AND it.[datetime] > '05/15/2015'
    GROUP BY CAST(Datetime AS DATE)
) as X

通过这种方式,您可以将结果包装到派生的 table 中,然后对其应用其余操作。

我想这也行,但现在无法测试:

SELECT  DATENAME(MM, CAST([datetime] AS DATE)) + ' ' 
+ CAST(DAY(CAST([datetime] AS DATE)) AS VARCHAR(2)) AS [DD Month], 
SUM(quantity) as total_quantity
FROM Invoice_Itemized ii
INNER JOIN Invoice_Totals it ON it.Invoice_Number = ii.Invoice_Number
WHERE ii.ItemNum = '4011'
AND it.[datetime] > '05/15/2015'
GROUP BY CAST([datetime] AS DATE)