Sql 从数据库中获取2周的数据

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

我正在退回一份最畅销的产品清单。目前,我的查询返回了过去7天的订单总数

我还需要带回前7天的项目数量总和,我想知道我将如何进行这项工作?我在想,只需在@startDate上加7天,在@endDate上加13天(这个日期已经设置为今天之后的7天)

当前将总和(amzOrdersItem.itemQty)中的物料数量作为订单获取。这将返回产品订单的计数

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。我认为那是最好的选择