我是SQL Server的新手,请帮忙
我有一张桌子:
Group id DEPT newadmission
--------------------------------------
A 001 CS Y
A 002 ECE
A 003 MC
B 561 CS
B 781 IT
C 789 CS Y
C 003 CS
如果一个小组有新入场,则整个小组都应该获得该值。
如果没有新入学,则可以保持原状。
我该如何实现?
所需的输出
Group id DEPT newadmission
------------------------------------
A 001 CS Y
A 002 ECE Y
A 003 MC Y
B 561 CS
B 781 IT
C 789 CS Y
C 003 CS Y
答案 0 :(得分:1)
使用窗口功能:
with toupdate as (
select t.*, max(newadmission) over (partition by group) as new_newadmission
from t
)
update toupdate
set newadmission = new_newadmission
where newadmission is null;
这假定newadmission
是NULL
或Y
,尽管它很容易适应其他值。
答案 1 :(得分:1)
您只能在公共表表达式后跟Update语句以获取所需的输出。
;WITH CTE AS
(
SELECT DISTINCT [Group] FROM
Table1 WHERE newadmission = 'Y'
)
UPDATE t
SET
t.newadmission = 'Y'
FROM
Table1 t INNER JOIN CTE ON
t.[Group] = CTE.[Group]