4

我有下表:

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)的总不同值,因此结果如下:

代码数量
10000 8
10001 7

最简单/最好的方法是什么?

谢谢,斯图

4

2 回答 2

1

你可以做

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 每个SELECTUNION

于 2011-09-28T13:55:09.090 回答
0
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
于 2011-09-28T14:10:52.600 回答