SQL查询查询

时间:2015-03-01 16:15:20

标签: sql sql-server

我的数据库有几列,有些列有数字数据。 我想选择特定的列并将它们组合成一列。 然后我想根据计数从中选择前3个数字。

-----------------------------
  PCM  |  M4  |  DS  |  VR1  
-----------------------------
  45   |  34  |  22  |  117
  34   |  201 |  7   |  393
  1    |  117 |  73  |  7
  45   |  55  |  7   |  43

所以我会选择PCM4DSVR1列并返回:

------------------
 col | col_count
------------------
  7  |     3
  45 |     2
  34 |     2

如果可能,我想在单个SQL查询中获取计数(频率)。如果没有两个会好的。

1 个答案:

答案 0 :(得分:1)

SELECT TOP 3 col
     , COUNT(col)
FROM (
    SELECT PCM AS col FROM tbl
     UNION ALL
    SELECT M4 FROM tbl
     UNION ALL
    SELECT DS FROM tbl
     UNION ALL
    SELECT VR1 FROM tbl ) t
GROUP BY col
ORDER BY COUNT(col) DESC