Sql 仅选择金额的第一部分
假设我有下表(实际上这是查询的结果) 我想要的是下表 除第一个代码值外,它为每个代码值的金额指定零 有什么策略可以做到这一点Sql 仅选择金额的第一部分,sql,sql-server,Sql,Sql Server,假设我有下表(实际上这是查询的结果) 我想要的是下表 除第一个代码值外,它为每个代码值的金额指定零 有什么策略可以做到这一点 提前感谢您可以使用行编号()来识别每个代码的第一行。从那时起,它只是一个简单的案例表达式: SELECT code, CASE rn WHEN 1 THEN amount ELSE 0 END AS amount FROM (SELECT code, amount, ROW_NUMBER() OVER (PARTITION BY c
提前感谢您可以使用
行编号()
来识别每个代码的第一行。从那时起,它只是一个简单的案例
表达式:
SELECT code, CASE rn WHEN 1 THEN amount ELSE 0 END AS amount
FROM (SELECT code, amount,
ROW_NUMBER() OVER (PARTITION BY code ORDER BY amount) AS rn
FROM my_table)
您可以使用row\u number()
为每个code
标识第一行。从那时起,它只是一个简单的案例
表达式:
SELECT code, CASE rn WHEN 1 THEN amount ELSE 0 END AS amount
FROM (SELECT code, amount,
ROW_NUMBER() OVER (PARTITION BY code ORDER BY amount) AS rn
FROM my_table)
请尝试:
select Code,
case when ROW_NUMBER() over (partition by Code Order by Amount)=1 then Amount else 0 end Amount
From YourTable
请尝试:
select Code,
case when ROW_NUMBER() over (partition by Code Order by Amount)=1 then Amount else 0 end Amount
From YourTable
试试这个
SELECT Code,CASE When RN > 1 Then 0 Else Amount
FROM
(
SELECT *,ROW_NUMBER() OVER (Partition by Code Order by (Select Null)) RN
FROM Table1
) AS T
试试这个
SELECT Code,CASE When RN > 1 Then 0 Else Amount
FROM
(
SELECT *,ROW_NUMBER() OVER (Partition by Code Order by (Select Null)) RN
FROM Table1
) AS T
这有用吗
declare @tab table(
code int,
amount int)
insert into @tab values
(1,100),
(1,100),
(1,100),
(2,500),
(2,500),
(3,1000);
select code,
case when rn=1 then
amount
else 0 end amount
from
(select *,
row_number()Over(partition by code Order by amount) RN
from @tab)t
这有用吗
declare @tab table(
code int,
amount int)
insert into @tab values
(1,100),
(1,100),
(1,100),
(2,500),
(2,500),
(3,1000);
select code,
case when rn=1 then
amount
else 0 end amount
from
(select *,
row_number()Over(partition by code Order by amount) RN
from @tab)t
请使用以下查询中的帐户更新表:
SELECT A.code,
( CASE
WHEN A.rno = 1 THEN B.amount
ELSE 0
END ) AS amount
FROM (SELECT Row_number()
OVER(
partition BY code
ORDER BY code DESC) AS rno,
code
FROM account) AS A
LEFT OUTER JOIN (SELECT C.code,
Sum(C.amount) AS amount
FROM account C
GROUP BY C.code) AS B
ON B.code = A.code
请使用以下查询中的帐户更新表:
SELECT A.code,
( CASE
WHEN A.rno = 1 THEN B.amount
ELSE 0
END ) AS amount
FROM (SELECT Row_number()
OVER(
partition BY code
ORDER BY code DESC) AS rno,
code
FROM account) AS A
LEFT OUTER JOIN (SELECT C.code,
Sum(C.amount) AS amount
FROM account C
GROUP BY C.code) AS B
ON B.code = A.code
获取此结果的查询是什么样子的?到目前为止,您尝试了什么?您需要0的金额吗?否则您可以使用按代码分组
您的查询是什么样的?到目前为止,您尝试了什么?您需要0的金额吗?否则您可以使用按代码分组