在Query上需要帮助

时间:2016-05-24 01:23:52

标签: sql sql-server

Table_Name:Order_trans_detail

Order_id    Order_date  Order_qty   Item_id  order_amount
100        12-Jan-16    1            1001   20
101        13-Feb-15    4            1001   80
103        14-Mar-16    3            1001   60
104        16-Dec-15    9            1001   180
105        17-Jan-16    1            1001   20
106        18-Feb-16    4            1001   80
107        19-Feb-16    3            1001   60
108        20-Jan-15    9            1001   180
109        21-Mar-15    3            1001   60
110        21-Apr-15    3            1001   60

需要查询以确定在2016年2月份放置的订单数量,以显示月份名称和计数。

1 个答案:

答案 0 :(得分:2)

您需要使用DATENAMEYEAR函数从日期中提取Month名称和Year,并在分组依据中使用它来获取count < / p>

select DATENAME(MONTH,Order_date ),YEAR(Order_date), Count(*)
From Order_trans_detail
Group by DATENAME(MONTH,Order_date ),YEAR

要过滤记录,请添加Where子句

Where DATENAME(MONTH,Order_date ) = 'february' and YEAR(Order_date) = 2016

要以Mon-year格式获得结果,请在Select

中使用此结果
DATENAME(MONTH,Order_date )+'-'+cast(YEAR(Order_date) as char(4))

如果您使用SQL Server 2012+连接月份和年份使用CONCAT功能

CONCAT(DATENAME(MONTH,Order_date ),'-',YEAR(Order_date))

使用CONCAT的好处是,在将IntVarchar

连接时,您无需执行显式转换