标题可能有点小,但是我试图删除一行的值而不删除实际的行。
这是我的桌子:
SELECT ID,CustomerID,Weight FROM Orders
我要完成的工作是:
ID MAX()
CustomerID 的Group By
值将为我提供Weight
中的空值,其中max和group by为未设置
是否可以一行完成此操作? partiton by
?
类似的东西:
SELECT MAX(ID) over (partition by CustomerID,Weight)....
我知道这是错误的,但如果可能的话,如果没有联接或CTE,并且仅在select语句中的一行中这样做会很棒。
答案 0 :(得分:1)
一种可能的方法是使用ROW_NUMBER
:
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
答案 1 :(得分:0)
尝试一下
Security.addProvider(new BouncyCastleProvider());
答案 2 :(得分:0)
您可以尝试一下。
SELECT ID,CustomerId,CASE WHEN ID= MAX(ID) OVER(PARTITION BY CustomerId) THEN Weight ELSE NULL END AS Weight FROM Orders