select a = case when b = 2 or b = 3 then '' when b = 1 then a end, b, KK = case b when 1 then 10 when 2 then 7 else 5 end, MM = case b when 1 then 7 when 2 then 6 else 3 end, NN = case b when 1 then 8 when 2 then 5 else 3 end, PP = case b when 1 then 34 when 2 then 10 else 11 end from (select a,b,c from t union all select '杭州',1,'MM' union all select '杭州',2,'MM' union all select '杭州',3,'MM' union all select '上海',1,'MM' union all select '上海',2,'MM' union all select '上海',3,'MM' union all select '北京',1,'MM' union all select '北京',2,'MM' union all select '北京',3,'MM') t group by a,b
when b = 1 then a
end,
b,
KK = case b when 1 then 10
when 2 then 7
else 5
end,
MM = case b when 1 then 7
when 2 then 6
else 3
end,
NN = case b when 1 then 8
when 2 then 5
else 3
end,
PP = case b when 1 then 34
when 2 then 10
else 11
end
from (select a,b,c from t union all
select '杭州',1,'MM' union all
select '杭州',2,'MM' union all
select '杭州',3,'MM' union all
select '上海',1,'MM' union all
select '上海',2,'MM' union all
select '上海',3,'MM' union all
select '北京',1,'MM' union all
select '北京',2,'MM' union all
select '北京',3,'MM') t group by a,b