SQL Server查找具有相同ID的重复日期
我正在使用SQL Server 2005,我有一个包含以下内容的表SQL Server查找具有相同ID的重复日期,sql,sql-server-2005,Sql,Sql Server 2005,我正在使用SQL Server 2005,我有一个包含以下内容的表 [uniqueID] [requirementId] [number] [description] [dtmexecuted] [amount] 我需要找到所有具有相同requirementid和dtmexecuted的行。我试过了 select requirementid, dtmexecuted, count(*) from [MyTable] group by requirementid,
[uniqueID] [requirementId] [number] [description] [dtmexecuted] [amount]
我需要找到所有具有相同requirementid和dtmexecuted的行。我试过了
select
requirementid, dtmexecuted, count(*)
from
[MyTable]
group by
requirementid, dtmexecuted
having
count(*) > 1
order by
requirementid
但这并没有让我得到我需要的结果。这是我需要的一个例子
[FEE55DE4-F7AD-438F-83F5-0002C7DAF993] [3719D29C-8532-4128-BECA-F720106AE61B] [03] [desc] [2011-04-01 00:00:00.000] [900.00]
[BRW46DE4-F1GC-125C-51RC-3985G7CFF873] [3719D29C-8532-4128-BECA-F720106AE61B] [04] [desc 2] [2011-04-01 00:00:00.000] [1900.00]
我需要写一些东西,将这两行返回为具有相同的requirementid和dtmexecuted。如果需要返回行,则需要使用窗口函数:
select [uniqueID], [requirementId], [number], [description], [dtmexecuted], [amount]
from (select t.*,
count(*) over (partition by requirementid, dtmexecuted) as cnt
from MyTable t
) t
where cnt > 1
如果需要返回行,则需要使用窗口函数:
select [uniqueID], [requirementId], [number], [description], [dtmexecuted], [amount]
from (select t.*,
count(*) over (partition by requirementid, dtmexecuted) as cnt
from MyTable t
) t
where cnt > 1
这是我解决这个问题的通常方法
select
dest.*
from
(
select
requirementid,
dtmexecuted,
count(*) as RowCount
from [MyTable]
group by requirementid, dtmexecuted
having count(*) > 1
) sub
join [MyTable] dest
on dest.requirementid = sub.requirementid
and dest.dtmexecuted = sub.dtmexecuted
order by requirementid, dtmexecuted
您也可以使用CTE或表格变量来执行此操作…这是我解决此问题的常用方法
select
dest.*
from
(
select
requirementid,
dtmexecuted,
count(*) as RowCount
from [MyTable]
group by requirementid, dtmexecuted
having count(*) > 1
) sub
join [MyTable] dest
on dest.requirementid = sub.requirementid
and dest.dtmexecuted = sub.dtmexecuted
order by requirementid, dtmexecuted
您也可以使用CTE或表变量来完成此操作…我看不出任何查询失败的原因,您的查询测试是否正确?我看不出任何查询失败的原因,您的查询测试是否正确?但第一件事是为什么原始查询会失败???@loki:原始查询失败是因为GROUP BY,使用group by每个只返回一行(requirementid,dtmexecuted),但第一件事是为什么原始查询会失败???@loki:原始查询失败是因为group by,使用group by每个只返回一行(requirementid,dtmexecuted)