Sql server 仅显示分区为的最大行的值?

Sql server 仅显示分区为的最大行的值?,sql-server,null,max,row,partition-by,Sql Server,Null,Max,Row,Partition By,标题可能有点不对劲,但是我试图删除一行的值,而不删除实际的行 这是我的桌子: SELECT ID,CustomerID,Weight FROM Orders 我想要实现的是: ID的MAX()值分组依据CustomerID,在未设置MAX和Group By的情况下,在权重中为我提供空值 可以在一行中完成吗?是否由的一部分组成 比如: SELECT MAX(ID)over(按CustomerID、Weight划分)… 试试这个 ;WITH CTE AS ( SELECT

标题可能有点不对劲,但是我试图删除一行的值,而不删除实际的行

这是我的桌子:

SELECT ID,CustomerID,Weight FROM Orders

我想要实现的是:

ID的
MAX()
分组依据
CustomerID,在未设置MAX和Group By的情况下,在
权重
中为我提供空值

可以在一行中完成吗?是否由的一部分组成

比如:

SELECT MAX(ID)over(按CustomerID、Weight划分)…

试试这个

;WITH CTE
AS
(
    SELECT
        MAX_ID = MAX(ID) OVER(PARTITION BY CustomerId),
        ID,
        CustomerId,
        Weight
        FROM Orders
)
SELECT
    ID,
    CustomerId,
    Weight = CASE WHEN ID = MAX_ID THEN Weight ELSE NULL END
    FROM CTE
你可以试试这个

SELECT ID,CustomerId,CASE WHEN ID= MAX(ID) OVER(PARTITION BY CustomerId) THEN Weight ELSE NULL END AS Weight FROM Orders

一种可能的方法是使用
行编号

SELECT 
    ID,
    CustomerID,
    CASE 
        WHEN ROW_NUMBER() OVER (PARTITION BY CustomerId ORDER BY ID DESC) = 1 THEN [Weight]
        ELSE Null
    END AS [Weight]
FROM #Orders
ORDER BY ID
输入:

CREATE TABLE #Orders (
    ID int,
    CustomerID int,
    [Weight] int
)
INSERT INTO #Orders
    (ID, CustomerID, [Weight])
VALUES
    (1, 11, 100),
    (2, 11, 17),
    (3, 11, 35),
    (4, 22, 26),
    (5, 22, 78),
    (6, 22, 10030)
输出:

ID  CustomerID  Weight
1   11          NULL
2   11          NULL
3   11          35
4   22          NULL
5   22          NULL
6   22          10030