5

私は、クライアントが特定の列の値のみをカウントすることを望んでいるテーブルに取り組んでいます。

このようなテーブルがあります(注:実際のテーブルではありません)

company_name | type  | ................
com A        | type1 | ................
com A        | type2 | ................
com B        | type1 | ................
com A        | type2 | ................
com A        | type1 | ................
com C        | type1 | ................
com C        | type2 | ................
com A        | type1 | ................

まったくカウントしたくない列がありますが、タイプ列についても同様です

必要なテーブルは次のようになります

company_name | Type1 | Type2 | ..........
com A        |   3   |   2   | ..........
com B        |   1   |   0   | ..........
com C        |   1   |   1   | ..........

私がこれまでに得たものは次のとおりです。

company_name | Type  | count | ..........
com A        | type1 |   3   | ..........
com A        | type2 |   2   | ..........
com B        | type1 |   1   | ..........
com C        | type1 |   1   | ..........
com C        | type2 |   1   | ..........

これで頭蓋骨を引っ掻いていたので助けてください。

4

1 に答える 1

5

これを試して:

SELECT
  company_name,
  SUM(IIF(Type = 'type1', 1, 0)) AS Type1,
  SUM(IIF(Type = 'type2', 1, 0)) AS Type2,
  SUM(IIF(Type = 'type3', 1, 0)) AS Type3
FROM table
GROUP BY company_name;

アップデート

MySQLIFでは、Access の の代わりにステートメントを使用できます。また、MySQL の暗黙的な変換を使用せずに、またはそのため、IIFそれを記述することもできます。IFCASE

SELECT Promoter, 
  Sum(NoticeType = 'VARIATION')       AS 'Variation', 
  Sum(NoticeType = 'TWO HOURS AFTER') AS 'Two Hours After', 
  Sum(NoticeType = 'THREE MONTHS')    AS 'Three Months', 
  Sum(NoticeType = 'THREE DAY')       AS 'Three Day', 
  Sum(NoticeType = 'TEN DAY')         AS 'Ten Day' 
FROM notices 
GROUP BY Promoter;
于 2012-12-28T18:36:59.583 に答える