2015-05-04 54 views
1

我有以下数据的表(Tbl_Test)。如何在这里使用havng count的SQL查询?

  RecordId  BatchName   Numbers  MQC   
      1   20150443   321106   0  
      2   20150430   321107   0 
      3   20150430   321107   1 
      4   20150412   321110   2 
      5   20150430   321118 
      6   20150430   321120 
      7   20150432   321120 
      8   20150430   321126 
      9   20150432   321127 
      10   20150430   321129 
      11   20150431   321129 

从上面的表格我想输出一样,数列,其计数大于1

 RecordId  BatchName   Numbers  MQC   
     2   20150430   321107   0  
     3   20150430   321107   1 
     6   20150430   321120 
     7   20150432   321120 
     10   20150430   321129 
     11   20150431   321129 

我已经试过以下选择,但没有成功:

select RecordId,BatchName,Numbers,MQC 
from Tbl_Test 
group by RecordId,BatchName,Numbers,MQC 
having count(Numbers)>1 
+0

你想要但你有什么试过?你的rdbms是什么? –

+2

通过唯一ID列进行分组是无意义的操作。你会得到完全相同的结果从'选择ID从表'和'从表组中选择ID ID' –

+0

我编辑了你的问题,包括你的努力。请编辑它以在您的rdbms中包含一个标记(mysql,oracle,sql server ...) –

回答

-1

在MQC上使用GroupID上的RecordID进行计数。

'Count(RecordId)Group By MQC'应该为你工作。

+0

这对OP有何帮助? – ughai

3
;WITH CTE AS 
(
    SELECT 
    RecordId, 
    BatchName, 
    Numbers, 
    MQC, 
    count(*) over (partition by Numbers) cnt 
    FROM tbl_test 
) 
SELECT 
    RecordId, BatchName, Numbers, MQC 
FROM CTE 
WHERE cnt > 1 
+0

@ughai这将工作从sqlserver 2008+ –

+0

哎呀,我的错误:) – ughai

3

您可以使用GROUP BYHAVINGIN .Something这样。

SELECT * FROM Tbl_Test 
WHERE Numbers IN 
(
    SELECT Numbers 
    FROM Tbl_Test 
    GROUP BY Numbers 
    HAVING COUNT(*) > 1 
)