У меня есть 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