25

人によってはとてもシンプルに見えるかもしれませんが、私には理解できません。
同じテーブルから複数の MS-SQL SELECT クエリを何度も実行しています。

SELECT count(Page) as tAEC
FROM someTable
WHERE Page LIKE '%AEC%'

次の

SELECT count(Page) as tTOL
FROM someTable
WHERE Page LIKE '%TOL%'

等々...

このクエリを作成するより効率的な方法は何でしょうか。同様の質問をたくさんグーグルで検索しましたが、どれも機能させることができませんでした。したがって、どんな助けも大歓迎です。

4

2 に答える 2

79
SELECT sum(case when Page LIKE '%AEC%' then 1 end) as tAEC, 
    sum(case when Page LIKE '%TOL%' then 1 end) as tTOL 
FROM someTable 
于 2012-10-17T15:55:33.800 に答える
7

あなたが使用することができますGROUP BY Page

SELECT
  Page
, COUNT(Page) as "nb"
FROM someTable
GROUP BY Page

あなたもすることができますGROUP BY CASE...

SELECT
  CASE
    WHEN Page LIKE '%AEC%' THEN "AEC"
    WHEN Page LIKE '%TOL%' THEN "TOL"
    ELSE ""
  END AS "type"
, count(Page) as "nb"
FROM someTable
GROUP BY type

あなたもすることができますCOUNT IF

SELECT
  COUNT(IF(Page LIKE '%AEC%', 1, NULL) THEN "AEC"
, COUNT(IF(Page LIKE '%TOL%', 1, NULL) THEN "TOL"
FROM someTable
于 2012-10-17T15:56:43.973 に答える