SQL Server 2008-选择查询特定项

SQL Server 2008-选择查询特定项,sql,sql-server-2008,select,Sql,Sql Server 2008,Select,我有一个有很多列的表,我正试图运行一个查询,但是我很难找到它。这就是我的桌子的样子 clientID Code ----------------------- 17 DAC7 19 DAC8 20 TIM19 21 DAC7 89 TIM19 在这里,我有两个专栏(还有很多,但它们实际上并不相关)。所以我面临的问题是,每个客户端都应该有不

我有一个有很多列的表,我正试图运行一个查询,但是我很难找到它。这就是我的桌子的样子

 clientID        Code
 -----------------------
 17              DAC7
 19              DAC8
 20              TIM19
 21              DAC7
 89              TIM19
在这里,我有两个专栏(还有很多,但它们实际上并不相关)。所以我面临的问题是,每个客户端都应该有不同的代码,但是可能有两个不同的客户端有相同的代码,这正是我想要找到的。如果你看上面,客户机17和21有DAC7,客户机20和89有TIM19

我如何查询此表以仅显示有多个代码实例的数据,例如

SELECT ClientID, Code 
FROM TblA 
WHERE Count (code) > 1
ORDER by Code
我希望的最终结果

 17              DAC7
 21              DAC7
 89              TIM19
 20              TIM19

您可以使用以下查询获取重复的
code
值:

SELECT Code 
FROM TblA 
GROUP BY Code
HAVING COUNT(*) > 1
使用此查询作为派生表,您可以
连接
回到原始表,以获得
客户ID
字段:

SELECT t1.ClientID, t1.Code
FROM TblA AS t1
JOIN (
  SELECT Code 
  FROM TblA 
  GROUP BY Code
  HAVING COUNT(*) > 1
) AS t2 ON t1.Code = t2.Code

您的想法是正确的,但您必须使用
分组方式。。。使用
获取重复代码:

SELECT   Code
FROM     TblA
GROUP BY Code
HAVING   COUNT(*) > 1
然后在子查询或派生表中使用它来获取
ID
s

子查询选项:

SELECT   ClientID, Code
FROM     TblA
WHERE    Code IN (SELECT   Code
                  FROM     TblA
                  GROUP BY Code
                  HAVING   COUNT(*) > 1)
ORDER BY Code
您可以在()上使用count()


只需使用以下命令:

SELECT ClientID, Code, COUNT(*) AS CNT
FROM Table
GROUP BY ClientID, Code
Having
COUNT(*) > 1

您也可以在语句中使用
来执行此操作:

SELECT clientID, code
FROM T
WHERE code IN
    (SELECT code
     FROM T
     GROUP BY code
     HAVING COUNT(*) > 1)
ORDER BY code
此处测试:

SELECT clientID, code
FROM T
WHERE code IN
    (SELECT code
     FROM T
     GROUP BY code
     HAVING COUNT(*) > 1)
ORDER BY code