我有一個SQL查詢,其中我檢索一些數據使用JOINS
也有DateTime
字段Delivery
,但雖然檢索我將它轉換爲字符串的格式MMM YYYY
但在最後我想按Delivery
對整個列表進行排序,但是當我將該列轉換爲字符串時,我不確定如何按原始DateTime
字段Delivery
排序結果。我的查詢如下按日期類型字符串排序在SQL Server 2012中
WITH deliveryProducts AS
(
SELECT DISTINCT FORMAT(a.Delivery,'MMMM yyyy') AS Delivery, b.Product
FROM DEALS as a, PRODUCTS as b Where a.TradeDate<[email protected]
)
, deliveryActuals AS
(
SELECT
FORMAT(a.Delivery,'MMMM yyyy') AS Delivery,
b.Product,COUNT(a.Id) AS Trades,
((6.2898*SUM(a.Volume))/DAY(EOMONTH(DATEADD(MONTH, DATEDIFF(MONTH, 0,a.Delivery), 0))))*0.001 AS BBLperDay,
SUM(a.Volume) AS M3,
SUM(a.Volume*a.Price)/Sum(a.Volume) AS WeightedAverage
FROM Deals AS a right outer join Products AS b
ON a.Product=b.Product AND
a.TradeDate<[email protected]
GROUP BY b.Product,
DATEADD(MONTH, DATEDIFF(MONTH, 0,a.Delivery),0), FORMAT(a.Delivery,'MMMM yyyy')
)
SELECT
dp.Delivery, dp.Product, trades, BBLperDay, M3, WeightedAverage
FROM
deliveryProducts dp
LEFT JOIN deliveryActuals da
on dp.Delivery = da.Delivery
and dp.product = da.Product
ORDER BY dp.Delivery,dp.Product
上述查詢給我所需要的數據,但通過種種作爲Delivery
一個string
。
我可以知道一個更好的方法來解決這個問題嗎?
工作很好。謝謝 – DoIt 2015-02-10 14:19:38