在SQL Server 2012中按字符串类型的日期排序

必须

我有一个SQL查询,我在其中检索一些数据,JOINS其中还有一个DateTime字段Delivery,但是在检索时,我将其转换为格式为String的字符串,MMM YYYY但最后我想对整个列表进行排序,Delivery但是当我将该列转换为字符串时, ,我不确定如何按原始DateTime字段对结果进行排序Delivery我的查询如下

WITH deliveryProducts AS
(
  SELECT DISTINCT FORMAT(a.Delivery,'MMMM yyyy') AS Delivery, b.Product 
  FROM DEALS as a, PRODUCTS as b Where a.TradeDate<=@tradeEndDate
)
, 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<=@tradeEndDate
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

我可以知道解决此问题的更好方法吗?

Ben Kean
ORDER BY cast(dp.Delivery as date), dp.Product

SQL Server可以自行处理将字符串'MMMM yyyy'或'MMM yyyy'强制转换为日期或日期时间。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当我的列在 Sql Server 2017 和 C# 中的类型为字符串时,如何按日期排序?

按字母数字字符串MS SQL Server 2012中的相似性排序

SQL Server按大小写排序-从日期/时间转换为字符串?

从字符串中删除特定字符(SQL Server 2012)

如何在SQL Server 2012中拆分字符串?

在SQL Server中以数字方式对字符串进行排序

在SQL Server中串联字符串+日期

修复SQL Server中的日期时间字符串

sql server中字符串到日期时间的转换

SQL Server日期格式从字符串

我需要帮助来对SQL Server表中的日期进行排序并将其填充到字符串中

选择带有日期的日期时,SQL Server 2012错误将日期从字符串转换为日期

SQL Server,如何在仅显示部分字符串的同时按完整字符串排序?

以数字和字符串开头的按列对SQL Server表进行数值排序

SQL Server按字符串的一部分排序

无法在SQL Server 2012中按别名排序

SQL Server 2012的此连接字符串正确吗?

MS Access对Azure SQL Server 2012的连接字符串

如何为 SQL Server 2012 创建连接字符串?

在 SQL Server 中拆分字符串

在 SQL Server 中追加字符串

SQL Server中从右到左的字符串

字符串中的SQL Server变量

传递空字符串时,SQL Server OPENJSON返回1900-01-01的日期类型

SQL Server中的日期排序

转换日期格式对SQL Server中的自制日期字符串无效

如何使用存储过程从 SQL Server 2012 中以字符串形式检索 Blob (VarBinary) 数据?

SQL Server 2012列表中的随机字符串

如何仅在SQL Server 2012中检索字符串的特定部分