2015-05-04 38 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 
)