Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.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
SQL-获取结果集中每个属性的最大值_Sql_Sql Server - Fatal编程技术网

SQL-获取结果集中每个属性的最大值

SQL-获取结果集中每个属性的最大值,sql,sql-server,Sql,Sql Server,我有一个场景,其中包含以下查询: SELECT Purchasing.Supplier, PurchasingParts.Part, PurchasingParts.Description, PurchasingParts.CostPerUnit, PurchasingParts.PurchaseOrderNum, PurchasingParts.ItemNum FROM PurchasingParts INNER JOIN Purchasing ON PurchasingParts.Purch

我有一个场景,其中包含以下查询:

SELECT
Purchasing.Supplier,
PurchasingParts.Part,
PurchasingParts.Description,
PurchasingParts.CostPerUnit,
PurchasingParts.PurchaseOrderNum,
PurchasingParts.ItemNum
FROM PurchasingParts
INNER JOIN Purchasing ON PurchasingParts.PurchaseOrderNum = Purchasing.PurchaseOrderNum
WHERE Supplier = 'Sup1'
ORDER BY PurchasingParts.PurchaseOrderNum DESC
返回以下结果:

Supplier    Part    Description CostPerUnit PurchaseOrderNum    ItemNum
Sup1        cm-14b  NULL        9.99        37163               1
Sup1        cm-13   jkljlkjlk   9.99        37160               1
Sup1        cm-13   jkljlkjlk   NULL        37158               1
但是,我希望过滤这组结果,以便只显示每个零件的最新订单(即具有最高PurchaseOrderNum的订单)(仅作用于零件属性)。因此,在这种情况下,最终结果将是:

Supplier    Part    Description CostPerUnit PurchaseOrderNum    ItemNum
Sup1        cm-14b  NULL        9.99        37163               1
Sup1        cm-13   jkljlkjlk   9.99        37160               1

我正在使用SQL Server 2008。

您可以使用
行编号()


PurchasingParts
表中,是否有id列或订单日期?PurchasingParts表的id是PurchaseOrderNum和ItemNumWhat about date of order的复合键?您有该字段吗?没有,因为采购订单号越高(自动递增),订单日期就越近。如果订单号随每条记录自动递增(SQL server递增,对吗?),那么
ItemNum
的含义是什么?也就是说,我们可以为同一订单提供多个
ItemNum
s吗?
ItemNum
只是
部分的id吗?
只有在我取出ORDER BY行时才有效:“ORDER BY子句在视图、内联函数、派生表、子查询和公共表表达式中无效,除非还指定了TOP、OFFSET或for XML。”我使用的是SQL Server 2014
SELECT t.* FROM (
    SELECT
        Purchasing.Supplier,
        PurchasingParts.Part,
        PurchasingParts.Description,
        PurchasingParts.CostPerUnit,
        PurchasingParts.PurchaseOrderNum,
        PurchasingParts.ItemNum,
        ROW_NUMBER() OVER(PARTITION BY PurchasingParts.Part ORDER BY PurchasingParts.PurchaseOrderNum DESC) as rnk
    FROM PurchasingParts
    INNER JOIN Purchasing ON PurchasingParts.PurchaseOrderNum = Purchasing.PurchaseOrderNum
    WHERE Supplier = 'Sup1'
    ) t
WHERE t.rnk = 1
ORDER BY t.PurchaseOrderNum DESC