1

私は2つの列を持つこのテーブルを持っています:

ID, TypeID

各 ID は複数の TypeID を持つことができます。クエリ結果には、次のものが必要です。

ID, Count(TypeID = 10), Count(TypeID = 20 or 30), Count(TypeID 40 and 50)

クエリ自体は、可能な限り高速でパフォーマンスが高い必要があります。誰でも助けることができますか?

4

1 に答える 1

6

これを試して:

SELECT 
  ID,
  SUM(CASE WHEN TypeID = 10 THEN 1 ELSE 0 END) "Count of 10",
  SUM(CASE WHEN TypeID IN (20, 30) THEN 1 ELSE 0 END) "Count of 30 or 20",
  SUM(CASE WHEN TypeID IN (40, 50) THEN 1 ELSE 0 END) "Count of 40 AND 50"
FROM Table
GROUP BY ID;

最後のケース:値 40 と 50 のカウントが得られるため、述語はうまくいくとCount(TypeID 40 and 50)思います。TypeID IN (40, 50)

SQL フィドルのデモ

于 2012-12-03T14:26:00.223 に答える