Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据最近7天的日期查询前3名已售完产品的SQL_Sql_Sql Server - Fatal编程技术网

根据最近7天的日期查询前3名已售完产品的SQL

根据最近7天的日期查询前3名已售完产品的SQL,sql,sql-server,Sql,Sql Server,我要上星期卖完的前三名产品 这是我的sql查询 select ProductId,sum(Quantity) as quantity,createdOn from (SELECT inv.Id,invd.ProductId, invd.Quantity ,cast (inv.CreatedOn as date) as createdOn FROM Invoice as inv INNER JOIN InvoiceDetail invd ON invd.InvoiceId = inv

我要上星期卖完的前三名产品

这是我的sql查询

select   ProductId,sum(Quantity) as quantity,createdOn from

(SELECT  inv.Id,invd.ProductId, invd.Quantity  ,cast (inv.CreatedOn as date) as createdOn FROM Invoice as inv 
INNER JOIN 
InvoiceDetail invd
ON
invd.InvoiceId = inv.id
WHERE inv.CreatedOn  >= DATEADD(day,-11117, GETDATE()) ) as tbl 
group by createdOn , ProductId 
ORDER BY createdOn DESC 
但我并没有在每次约会中获得前三名的产品。如果我使用TOP 3,那么它将只提供TOP 3产品,而我希望上周每天提供TOP 3产品

这是我最讨厌的但我每天只想要3张唱片。

预期产出:

如果我理解正确,您可以使用
行编号
获得每天前三名的
数量

根据
createdon
每天根据
quantity
列从高到低的顺序生成行号

   ;WITH CTE AS(
    SELECT productid,quantity,createdon,Row_number() over(partition by createdon ORDER BY quantity DESC,productid DESC) as RN
    FROM 
    ( 
        SELECT    invd.productid, 
                  sum(invd.quantity) as quantity, 
                  cast(inv.createdon AS date) AS createdon
        FROM      invoice  AS inv INNER JOIN invoicedetail invd
        ON         invd.invoiceid = inv.id 
        WHERE      inv.createdon >= dateadd(day,-11117, getdate()) 
        GROUP BY cast(inv.createdon AS date), invd.productid
    ) AS tbl 
)
SELECT * 
FROM CTE
WHERE RN <= 3

top
用于
sqlserver
,请保持标签正确!你能提供一些样本数据和预期结果吗?我提供了那个查询的结果。在
ProductId
中有许多相同的
数量
,你预期的结果是什么?没有得到预期的结果!它只是在productId的基础上对输出重新排序。@Aarsh我编辑了我的答案并添加了一些SQLFIDLE,希望能帮助您:)
| productID | quantity |  createdon | rn |
|-----------|----------|------------|----|
|        94 |        7 | 2018-07-25 |  1 |
|      1119 |        2 | 2018-07-25 |  2 |
|      1115 |        2 | 2018-07-25 |  3 |
|        94 |        4 | 2018-07-26 |  1 |
|      1117 |        2 | 2018-07-26 |  2 |
|      1114 |        2 | 2018-07-26 |  3 |