我的英语不好......请帮帮我...
在SQL Server 2005
中,我有一个表Total(PhoneNumber, Money, City)
有许多相同的记录具有相同的PhoneNumber
但不同的City
和Money
值。
现在,我想为NewCity
列设置值:select Max Money
(记录中具有相同PhoneNumber
的记录中的最大金额)。
我怎样才能做到这一点?
请帮帮我......
例如:
PhoneNumber City Money NewCity
0949000000 CTA 20 NULL
0945777777 VTH 35 NULL
0949000000 VTH 30 NULL
0945777777 VTY 120 NULL
0949000000 VTY 60 NULL
答案 0 :(得分:1)
假设您要将NewCity
设置为City
的值Max(Money)
的{{1}}行。 (而不是数字PhoneNumber
)
Max(Money)
如果我的假设是错误的,那么事实上你确实想要问的是什么,这更简单。
;WITH T1 AS
(
SELECT *,
ROW_NUMBER() OVER (PARTITION BY PhoneNumber
ORDER BY Money DESC) AS RN
FROM YourTable
), T2 AS
(
SELECT *,
MAX(CASE WHEN RN = 1 THEN City END)
OVER (PARTITION BY PhoneNumber) AS _NewCity
FROM T1
)
UPDATE T2
SET NewCity = _NewCity
答案 1 :(得分:0)
请尝试:
update t
set NewCity=(select MAX(money) from YourTable b where b.PhoneNumber=t.PhoneNumber)
from YourTable t
答案 2 :(得分:0)
如果您的总表中没有newcity列,并且只在重复的表上查看总表和分组上的最大值(金钱),则可以尝试查看newcity列。
select a.*,b.newcity from total a
join (select phonenumber,city, max(money) as newcity
from total group by phonenumber,city) b on b.phonenumber = a.phonenumber
and b.city = a.city
where a.money = b.newcity