• 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
  • 相关阅读:
    Django 【第十二篇】Form组件进阶
    Django 【第十一篇】Form组件基础
    前端知识点总结
    vue组件续和前端工程化
    vue组件
    Vue视图下
    Vue实例与渲染
    BootStrap
    jQuery事件与动画
    dom操作 属性操作 样式操作
  • 原文地址:https://www.cnblogs.com/chinabc/p/1980632.html
Copyright © 2020-2023  润新知