Sql 从数据库中获取2周的数据
我正在退回一份最畅销的产品清单。目前,我的查询返回了过去7天的订单总数 我还需要带回前7天的项目数量总和,我想知道我将如何进行这项工作?我在想,只需在@startDate上加7天,在@endDate上加13天(这个日期已经设置为今天之后的7天) 当前将总和(amzOrdersItem.itemQty)中的物料数量作为订单获取。这将返回产品订单的计数Sql 从数据库中获取2周的数据,sql,sql-server-2008,Sql,Sql Server 2008,我正在退回一份最畅销的产品清单。目前,我的查询返回了过去7天的订单总数 我还需要带回前7天的项目数量总和,我想知道我将如何进行这项工作?我在想,只需在@startDate上加7天,在@endDate上加13天(这个日期已经设置为今天之后的7天) 当前将总和(amzOrdersItem.itemQty)中的物料数量作为订单获取。这将返回产品订单的计数 ALTER PROCEDURE [dbo].[GetHighestSellingItems] @startDate datetime, @endD
ALTER PROCEDURE [dbo].[GetHighestSellingItems]
@startDate datetime,
@endDate datetime
AS
BEGIN
SET NOCOUNT ON;
SELECT TOP (20) twProducts.sku,
twProducts.title + ' / ' + LTRIM(CAST(twProducts.strength AS varchar(15))) + '%' AS Title,
sum(amzOrdersItem.itemQty) AS Orders,
twProducts.stock, aboProducts.asin, aboProducts.amzPrice
FROM twProducts INNER JOIN
amzOrdersItem ON twProducts.sku = amzOrdersItem.productSku INNER JOIN
amzOrders ON amzOrdersItem.amzOrderId = amzOrders.amzOrderId INNER JOIN
aboProducts ON twProducts.sku = aboProducts.sku
where (amzOrders.orderDate between @startDate and @endDate) and amzOrders.cancelled = 0
group by twProducts.sku, twProducts.title, twProducts.strength,
twProducts.stock, aboProducts.asin, aboProducts.amzPrice
ORDER BY sum(amzOrdersItem.itemQty) DESC
END
虽然这可能很方便,但这是我在查询中填充的.net代码,并获得结果
public List<GetHighSelling> GetHighSellingWeek()
{
DateTime? endDate = DateTime.Now.Date;
DateTime? startDate = DateTime.Now.Date.AddDays(-6).Date;
using (aboDataDataContext dc = new aboDataDataContext())
{
var query = from o in dc.GetHighestSellingItems(startDate, endDate)
select new GetHighSelling
{
sku = o.sku,
title = o.Title,
itemQty = o.Orders,
stock = o.stock,
amzPrice = o.amzPrice.ToString(),
asin = o.asin
};
return query.ToList();
}
}
public List GetHighSellingWeek()
{
DateTime?endDate=DateTime.Now.Date;
DateTime?startDate=DateTime.Now.Date.AddDays(-6.Date);
使用(abodatacontext dc=new abodatacontext())
{
var query=从dc.GetHighestSellingItems中的o开始(开始日期、结束日期)
选择new GetHighSelling
{
sku=o.sku,
标题=o.标题,
项目数量=订单数量,
库存=o.库存,
amzPrice=o.amzPrice.ToString(),
asin=o.asin
};
返回query.ToList();
}
}
你应该减去七天。如果你加上七天,你将要求在未来一周内销售最畅销的产品
(虽然这将是非常有用的信息,但数据库无法预见未来。)
您可以从结束日期计算开始日期:
DateTime? endDate = DateTime.Today.AddDays(-7);
DateTime? startDate = endDate.AddDays(-6);
你应该减去七天。如果你加上七天,你将要求在未来一周内销售最畅销的产品 (虽然这将是非常有用的信息,但数据库无法预见未来。) 您可以从结束日期计算开始日期:
DateTime? endDate = DateTime.Today.AddDays(-7);
DateTime? startDate = endDate.AddDays(-6);
将代码更改为
DateTime startDate = DateTime.Now.Date.AddDays(-13).Date;
将代码更改为
DateTime startDate = DateTime.Now.Date.AddDays(-13).Date;
你有什么问题想问吗?这是个问题。。。“我想知道我该怎么做?”我让它返回过去7天的计数,但我也需要它来返回前7天的计数:)你懂这些代码吗?当然,是我写的!net代码是我的linq语句并填充我的表。SQL显然正在获取数据。我需要知道的是获取本周前一周数据的最佳方法。在我的查询中,我想在@enddate上加上7天。但不确定如何在SQL中执行此操作。或者在.NET中这样做是否值得。因此,我为什么问,其他人可能知道更好的做事方式。@thatuxguy:在我看来,你应该在.NET代码中这样做。该过程已经可以灵活地重用,因此您可以获得所需的任何时间间隔。在.NET中,您可以创建另一个方法,向过程发送不同的间隔,或者向该方法添加一个参数,告诉它您希望获得的时间。您想问什么问题?这是一个问题。。。“我想知道我该怎么做?”我让它返回过去7天的计数,但我也需要它来返回前7天的计数:)你懂这些代码吗?当然,是我写的!net代码是我的linq语句并填充我的表。SQL显然正在获取数据。我需要知道的是获取本周前一周数据的最佳方法。在我的查询中,我想在@enddate上加上7天。但不确定如何在SQL中执行此操作。或者在.NET中这样做是否值得。因此,我为什么问,其他人可能知道更好的做事方式。@thatuxguy:在我看来,你应该在.NET代码中这样做。该过程已经可以灵活地重用,因此您可以获得所需的任何时间间隔。在.NET中,您可以创建另一个方法,向过程发送不同的间隔,或者向该方法添加一个参数,告诉它您希望获得多少周前的计数。不确定我说我希望未来的计数在哪里,我是在询问以前的计数。我在过去的7天里已经做过了,我现在需要在这7天之前的7天lol:)@thatuxguy:我的意思是你的查询将要求将来的记录。@thatuxguy:是的。由于查询得到的是一周前到现在的记录,因此在日期上加上七天将得到从现在到未来一周的记录。lol我明白你的意思,facepalm我的意思是我需要在今天的日期之前得到第一周和第二周的记录。lol不确定我说我想要未来的计数,我是在问以前的计数。我在过去的7天里已经做过了,我现在需要在这7天之前的7天lol:)@thatuxguy:我的意思是你的查询将要求将来的记录。@thatuxguy:是的。由于查询获取的是一周前到现在的记录,因此在日期上加上七天将获得从现在到未来一周的记录。lol我明白你的意思,facepalm我的意思是我需要在今天的日期之前获取第一周和第二周的记录。lolSo使用两个不同的参数(-13到-7),(-6到0)调用它两次并使它们在我的存储过程中为空。我认为这是最好的选择,使用两个不同的参数(-13到-7)、(-6到0)调用它两次,并在我的存储过程中使它们可以为null。我认为那是最好的选择