[英]Trying to use CASE statement in SQL Server
我有數據表,如下所示,
create table #UserRegion
(
UserName varchar(25),
RegionName varchar(25),
RegionID varchar(10),
RegionStatus varchar(15),
DefaultFlag char(1)
)
Insert into #UserRegion
values ('UserOne', 'Chicago', 'MW-1', 'Oniline', '1'),
('UserTwo', 'SanJose', 'W-6', 'Oniline', '0'),
('UserThree', NULL, NULL, 'Oniline', NULL),
('UserFour', NULL, NULL, 'Oniline', NULL),
('UserFive', 'Miami', 'E-4', 'Oniline', '0')
我希望結果集為,如果regionname / regionid為null,那么它應該從可用的regionname和regionid中選擇regionname和region id,其中Defaultflag = 1。
任何幫助將不勝感激。
您似乎的數據結構非常糟糕。 為什么默認值與用戶一起存儲?
在任何情況下,這可能會做你想要的:
select ur.*,
coalesce(ur.regionname, urdefault.regionname) as regionname,
coalesce(ur.regionid, urdefault.regionid) as regionid
from #UserRegion ur cross join
(select ur.*
from #UserRegion ur
where DefaultFlag = '1'
) urdefault;
這假設只有一行設置了默認標志。
我應該注意到你可以在沒有子查詢的情況下做到這一點:
select ur.*,
coalesce(ur.regionname,
max(case when DefaultFlag = '1' then regionname end) over ()
) as regionname,
coalesce(ur.regionid,
max(case when DefaultFlag = '1' then regionid end) over ()
) as regionid
from #UserRegion ur;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.