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
  • 相关阅读:
    关于在MAC上进行 LARAVEL 环境 Homestead 安装过程记录
    js 贷款计算器
    js 实现阶乘
    js 两点间距离函数
    composer Your requirements could not be resolved to an installable set of packages
    vue 项目优化记录 持续更新...
    vue 项目打包
    vue 真机调试页面出现空白
    vue 真机调试
    谈谈-Android状态栏的编辑
  • 原文地址:https://www.cnblogs.com/chinabc/p/1980632.html
Copyright © 2011-2022 走看看