Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 查询以获取SQL Server 2008中的重复记录_Sql Server 2008_Distinct - Fatal编程技术网

Sql server 2008 查询以获取SQL Server 2008中的重复记录

Sql server 2008 查询以获取SQL Server 2008中的重复记录,sql-server-2008,distinct,Sql Server 2008,Distinct,如何在与两列合并时从表中获取重复记录 我的表格值: UserId ProgramId 100 1 100 1 100 1 100 2 101 2 101 2 100 3 101 3 102 4 102 4 103 5 期望输出: UserId Program

如何在与两列合并时从表中获取重复记录

我的表格值:

UserId     ProgramId 
100          1 
100          1 
100          1 
100          2 
101          2 
101          2 
100          3 
101          3 
102          4 
102          4 
103          5 
期望输出:

UserId      ProgramId 
100          1 
100          2 
100          3 
101          2 
101          3 
我尝试了下面的查询,以获取表中distinct ProgramID的UserId的重复值

SELECT [UserId],[ProgramId],COUNT([UserId]) FROM [Table1]
GROUP BY [UserId],[ProgramId]
HAVING COUNT([UserId]) > 1
order by [UserId]

我正在获取UserId、ProgramId和重复行数,但没有为distinct ProgramId指定。我的问题中有什么错误??。任何建议都会非常有用。

您似乎可以使用以下查询来获得结果。这将使用CTE生成具有多个不同
程序ID的
用户ID的列表。一旦你有了它,你就可以使用它连接回你的表,以获得
userid
programid
的组合:

;with cte as
(
  select userid
  from table1
  group by userid
  having count(distinct programid) > 1
) 
select distinct c.userid, t.programid
from cte c
inner join table1 t
  on c.userid = t.userid;

请参见

您似乎可以使用以下查询来获得结果。这将使用CTE生成具有多个不同
程序ID的
用户ID的列表。一旦你有了它,你就可以使用它连接回你的表,以获得
userid
programid
的组合:

;with cte as
(
  select userid
  from table1
  group by userid
  having count(distinct programid) > 1
) 
select distinct c.userid, t.programid
from cte c
inner join table1 t
  on c.userid = t.userid;

请参见

您似乎可以使用以下查询来获得结果。这将使用CTE生成具有多个不同
程序ID的
用户ID的列表。一旦你有了它,你就可以使用它连接回你的表,以获得
userid
programid
的组合:

;with cte as
(
  select userid
  from table1
  group by userid
  having count(distinct programid) > 1
) 
select distinct c.userid, t.programid
from cte c
inner join table1 t
  on c.userid = t.userid;

请参见

您似乎可以使用以下查询来获得结果。这将使用CTE生成具有多个不同
程序ID的
用户ID的列表。一旦你有了它,你就可以使用它连接回你的表,以获得
userid
programid
的组合:

;with cte as
(
  select userid
  from table1
  group by userid
  having count(distinct programid) > 1
) 
select distinct c.userid, t.programid
from cte c
inner join table1 t
  on c.userid = t.userid;

请参见

您正在计算分组依据的同一列中的一列,该列始终为一(1)

请像这样尝试:

SELECT   [UserId],[ProgramId],COUNT(*)
FROM     [Table1]
GROUP BY [UserId],[ProgramId]
HAVING   COUNT(*) > 1
order by [UserId]
当然,
不同的
也会做同样的事情:

SELECT DISTINCT
         [UserId],[ProgramId]
FROM     [Table1]
order by [UserId]

…因为
独特的
实际上只是一个简化的
分组,但它不是可扩展/可编辑的。因为我假设你想用它做更多的事情,而不仅仅是我们在这里看到的…

你指望的是你分组依据的同一列中的一列,那总是一(1)

请像这样尝试:

SELECT   [UserId],[ProgramId],COUNT(*)
FROM     [Table1]
GROUP BY [UserId],[ProgramId]
HAVING   COUNT(*) > 1
order by [UserId]
当然,
不同的
也会做同样的事情:

SELECT DISTINCT
         [UserId],[ProgramId]
FROM     [Table1]
order by [UserId]

…因为
独特的
实际上只是一个简化的
分组,但它不是可扩展/可编辑的。因为我假设你想用它做更多的事情,而不仅仅是我们在这里看到的…

你指望的是你分组依据的同一列中的一列,那总是一(1)

请像这样尝试:

SELECT   [UserId],[ProgramId],COUNT(*)
FROM     [Table1]
GROUP BY [UserId],[ProgramId]
HAVING   COUNT(*) > 1
order by [UserId]
当然,
不同的
也会做同样的事情:

SELECT DISTINCT
         [UserId],[ProgramId]
FROM     [Table1]
order by [UserId]

…因为
独特的
实际上只是一个简化的
分组,但它不是可扩展/可编辑的。因为我假设你想用它做更多的事情,而不仅仅是我们在这里看到的…

你指望的是你分组依据的同一列中的一列,那总是一(1)

请像这样尝试:

SELECT   [UserId],[ProgramId],COUNT(*)
FROM     [Table1]
GROUP BY [UserId],[ProgramId]
HAVING   COUNT(*) > 1
order by [UserId]
当然,
不同的
也会做同样的事情:

SELECT DISTINCT
         [UserId],[ProgramId]
FROM     [Table1]
order by [UserId]
…因为
独特的
实际上只是一个简化的
分组,但它不是可扩展/可编辑的。既然我假设你想用它做更多的事情,而不仅仅是我们在这里看到的