zoukankan      html  css  js  c++  java
  • SQL取出每个产品的Top n 条记录

    1.创建表结构和数据

    创建表和数据
    Create Table Product --产品表
    (
    ProductID 
    Int Identity(1,1Primary key--产品ID
    ProductName NVarchar(100Not Null--产品名称
    ProductPrice Int Not Null--价格
    )
    GO

    Create Table ProductOrder --产品订单
    (
    OrderID 
    Int Identity(1000,1Primary key,
    ProductID 
    Int,
    Quantity 
    Int,--数量
    amount Int,--金额
    OrderDateTime DateTime Not Null --下单时间
    )
    Alter Table ProductOrder
    Add Constraint FK_ProductOrder_ProductID Foreign Key(ProductID)
    References Product(ProductID)
    GO


    Insert Into Product
    Values('黄金',389.8)

    Insert Into Product
    Values('白银',8.9)

    Insert Into ProductOrder
    Values(1,10,3890,GetDate())

    Insert Into ProductOrder
    Values(2,1000,8900,GetDate())

    Insert Into ProductOrder
    Values(1,150,389.8*150,'2012-12-21')

    Insert Into ProductOrder
    Values(1,60000,388*60000,'2011-10-1')

    Insert Into ProductOrder
    Values(2,10000,88950,GetDate())

    Insert Into ProductOrder
    Values(2,1000,8850,GetDate())

    Insert Into ProductOrder
    Values(2,4000,32850,GetDate())

    Select * from Product
    Select * from ProductOrder

    2.取出每个产品的前2条记录

       2.1 使用ROW_NUMBER() 进行排位分组

    Select T.OrderID, P.ProductName, T.Quantity, T.Amount, T.OrderDateTime
    From Product P
    Left Join 
    (
    Select Row_Number() over(Partition By ProductID Order by OrderDateTime DescAs RowID,
    OrderID, ProductID,Quantity, Amount,OrderDateTime
    From ProductOrder
    ) T 
    On T.ProductID = P.ProductID
    Where T.RowID<3

       2.2 使用Cross Apply

    Select T.OrderID, P.ProductName, T.Quantity, T.Amount, T.OrderDateTime
    From Product P
    Cross Apply
    (
    Select Top 2 * from ProductOrder O Where O.ProductID = P.ProductID
    Order By OrderDateTime Desc
    As T
  • 相关阅读:
    第十四周学习进度
    团队十日冲刺17
    团队十日冲刺16
    找水王
    搜狗输入法评价
    团队十日冲刺15
    团队十日冲刺14
    团队十日冲刺13
    团队十日冲刺12
    团队十日冲刺11
  • 原文地址:https://www.cnblogs.com/chinabc/p/1980632.html
Copyright © 2011-2022 走看看