1

次のデータセット

  ID  | Description |   Type
-------------------------------
12204 |     ABC     | Special
12204 |     DEF     | Connector
12541 |     GHI     | Special
12541 |     JKL     | Special
12541 |     MNO     | Hybrid
13292 |     PQR     | Resistor
13292 |     STU     | Connector
13292 |     VWX     | Hybrid
14011 |     YZa     | Special
14012 |     bcd     | Resistor

私がそれから欲しいものは次のとおりです:

  ID  | Description |   Type
-------------------------------
12204 |     DEF     | Connector
12541 |     MNO     | Hybrid
13292 |     PQR     | Resistor or Connector or Hybrid <-- doesn't matter
14011 |     YZa     | Special
14012 |     bcd     | Resistor

したがって、必要なのは Type に応じたデータセット全体だけです。Typeが「Special」しかない場合はそれを使いたいし、そうでない場合は他のものを使いたいです。

私はすべてをグループ化することを考え出しましたが、ほとんどが特別なものを含む最初の行を使用しています...

これまでの私のクエリ:

SELECT ID, Description, Type FROM anyDatabase GROUP BY ID HAVING count(Type) > 1 

誰かが助けてくれることを願っています:) Adi

4

2 に答える 2

1

これは解決策になる可能性があります:

SELECT 
    newtable.id, 
    newtable.description, 
    newtable.type
FROM newtable 
INNER JOIN(
           SELECT
              id, 
              MAX(CASE WHEN Type!='Special' THEN Type END) type
           FROM newtable
           GROUP BY id
      ) mx
  ON newtable.id=mx.id
     AND newtable.type=COALESCE(mx.type, 'Special')

ここでフィドル(フィドルを提供してくれた raheel shan に感謝!)

于 2013-04-18T08:19:48.290 に答える