MySQL отличные значения по столбцам - PullRequest
4 голосов
/ 28 сентября 2011

У меня есть следующая таблица:

id    lb     rb     ls     rs     ch     bk     ot
 1  10000  10001  10001  10001  10001  10001  10000
 2      0  10000      0  10001      0  10000      0
 3      0      0  10000  10001  10000      0      0
 4      0      0      0  10000      0      0      0
 5      0      0      0  10000      0      0      0

Я хочу иметь возможность получить итоговые значения по всем столбцам (исключая 0), поэтому результат будет таким:

Code   Qty
10000    8
10001    7

Какой самый простой / лучший способ сделать это?

Спасибо, Stu

Ответы [ 2 ]

1 голос
/ 28 сентября 2011

Вы можете сделать

SELECT col1, COUNT(*)
FROM
  (
  SELECT lb AS col1
  FROM table
    UNION ALL 
  SELECT rb
  FROM table
    UNION ALL ... etc
  ) a
WHERE col1 != 0
GROUP BY col1

Вместо WHERE col1 != 0 вы можете добавить WHERE field_name !=0 к каждому SELECT в UNION

0 голосов
/ 28 сентября 2011
SELECT code     AS Code
     , SUM(cnt) AS Qty
FROM
  (   SELECT lb AS code
           , COUNT(*) AS cnt
      FROM TableX
      GROUP BY lb        
  UNION ALL
      SELECT rb AS code
           , COUNT(*) AS cnt
      FROM TableX
      GROUP BY rb
  UNION ALL        
    ...
  UNION ALL
      SELECT ot AS code
           , COUNT(*) AS cnt
      FROM TableX
      GROUP BY ot
  ) AS tmp
GROUP BY code
...