我有一个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