如何在SQL Server中按类别分组使用case语句
我有一张桌子 Id Values 1 A 1 A 1 B 2 @ 2 @ 2 @ 3 A 3 A 3 A 3 A 3 @ 4 B 4 B 4 B Id值 1A 1A 1b 2 @ 2 @ 2 @ 3A 3A 3A 3A 3 @ 4 B 4 B 4 B 输出: Id Values 1 @ 2 @ 3 A 4 B Id值 1 @ 2 @ 3A 4 B 在每个如何在SQL Server中按类别分组使用case语句,sql,sql-server,tsql,case,Sql,Sql Server,Tsql,Case,我有一张桌子 Id Values 1 A 1 A 1 B 2 @ 2 @ 2 @ 3 A 3 A 3 A 3 A 3 @ 4 B 4 B 4 B Id值 1A 1A 1b 2 @ 2 @ 2 @ 3A 3A 3A 3A 3
Id
组中,如果所有值都是@
,我想将该Id
的值设置为@
否则,如果Id
的所有值都相同(忽略@
s)(例如,所有A
s),则将该Id
的值设置为该值(A
),否则将Id的值设置为
如何运行CASE
语句,为sqlserver
中的每个Id
赋予一个唯一的值
SQL Server的新手,请提供帮助。在
ID
上使用GROUP BY
,并检查MIN()
和MAX()
。如果最小值=最大值,则所有值都相同
对于您的情况,扭转是@
。它应该被忽略。诀窍是在@
select id,
case when min(NULLIF([Values], '@')) = max(NULLIF([Values], '@'))
and min(NULLIF([Values], '@')) <> '@'
then min(NULLIF([Values], '@'))
else '@'
end
from yourtable
group by id
选择id,
最小值(NULLIF([值],'@'))=最大值(NULLIF([值],'@'))时的情况
和min(空值([值],“@”))“@”
然后是min(NULLIF([Values],'@'))
其他'@'
终止
从你的桌子上
按id分组
您是否尝试过按Id、值分组?