カラム値が重複していない場合にはその値を、そうでない場合にはnullを返すSQLを作成したい


内容としてはタイトルで全てですが、うまく表現できていないように思えるため下記に図を記載しました。  
一応、実現することはできたのですが、もう少しシンプルに書けるかと思い質問させて頂きました。（case文などは使わず、外部結合を使用できそうな気がしていますが実現できませんでした。）

### テーブル

[code]

    | name | value |
    |------|-------|
    |   a  |  a1   |
    |   b  |  b1   |
    |   c  |  c1   |
    |   c  |  c2   |
    
[/code]

### 欲しい結果

[code]

    | name | value |
    |------|-------|
    |   a  |  a1   |
    |   b  |  b1   |
    |   c  |  null |
    |   c  |  null |
    
[/code]

### とりあえず作成したSQL

[code]

    select
      h.name
      , case tmp.c 
        when 1 then h.value 
        else null 
        end as value 
    from
      hoge as h
      , ( 
        select
          name
          , count(value) c 
        from
          hoge 
        group by
          name
      ) as tmp 
    where
      h.name = tmp.name 
    order by
      name; 
    
[/code]

### 再現するためのSQL

[code]

    create table hoge(name varchar(10),value varchar(10));
    insert into hoge values('a','a1'),('b','b1'),('c','c1'),('c','c2');
    select * from hoge order by name;
    
[/code]




副問い合わせを使用しなくても`count(value)`自体を`case when`で評価すればいいのでは。

[code]

    select
        name
        , case count(value)
          when 1 then min(value)
          else null end 
    from
        hoge 
    group by
        name
    
[/code]




副問い合わせを使用しなくても`count(value)`自体を`case when`で評価すればいいのでは。

[code]

    select
        name
        , case count(value)
          when 1 then min(value)
          else null end 
    from
        hoge 
    group by
        name
    
[/code]

