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