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