我正在该图表中开发一个图表,我想分别显示过去六个月的详细信息。 我想在条形图中显示细节。
但我没有得到任何解决方案。 我在SQL查询中有点弱。
直到现在我得到了上个月的数据。 但我想要过去六个月的数据。 这是我的代码。
DECLARE @StartDate DATETIME, @EndDate DATETIME
SET @StartDate = DATEADD(mm, DATEDIFF(mm,0,getdate())-1, 0)
SET @EndDate = DATEADD(mm, 1, @StartDate)
SELECT sum(quantity)
FROM RS_Sell_Order_Master as s
left outer join RS_Sell_Order_Mapping as sm on sm.sell_order_no = s.sell_order_no
left outer join RS_GIN_Master as GIN on gin.product_id = sm.product_id
WHERE del_date BETWEEN @StartDate AND @EndDate
我想要过去六个月这样的o / p假设我上个月卖了10个数量&那个月有20个流行&我之前没卖过,所以o / p应该是
null
null
null
null
10
20
有点像这样的事情。
答案 0 :(得分:3)
这将在6个月前准确指定一个日期 - 这似乎不是你需要回到SqlServer的{0} DATETIME
的零数据的原因:
SET @StartDate = DATEADD(mm, -6, CURRENT_TIMESTAMP);
修改强>
假设您希望月份从每个月的第一个到每个月结束, 并假设因为你有空值但仍想显示我们需要制造缺失月份的数据(例如使用递归CTE)
DECLARE @StartDate DATETIME;
SET @StartDate = DATEADD(mm, -6, CURRENT_TIMESTAMP);
WITH cte AS
(
SELECT 0 AS TheMonth
UNION ALL
SELECT TheMonth + 1
FROM cte
WHERE TheMonth < 5
)
SELECT sum(quantity)
FROM
cte
LEFT OUTER JOIN RS_Sell_Order_Master as s
ON del_date >= DATEADD(MM, cte.TheMonth, @StartDate) AND del_date < DATEADD(MM, cte.TheMonth + 1, @StartDate)
-- Other Joins here
GROUP BY cte.TheMonth
ORDER BY cte.TheMonth;
答案 1 :(得分:0)
每月的项目总数不能像
那样计算select sum(items),left(date,6)+'01' from yourTable
group by left(date,6)
假设您的日期是112格式....并且它是varchar(8)类型..