Sql 如何显示共享相同日期(不包括小时和分钟)的记录,以及如何将表与自身进行比较

Sql 如何显示共享相同日期(不包括小时和分钟)的记录,以及如何将表与自身进行比较,sql,Sql,在下表中,我试图通过使用self-join将其与自身进行比较,以便能够检索共享相同RegCode和不同AdmissionID且具有相同admissionate(不包括小时和分钟)的记录 AdmitDate AdmissionID RegCode FirsName 6/16/2015 11:15 1370 JB01.000000001 Eric 6/16/2015 15:24 1393 JB01.000000001 Eric 6/1

在下表中,我试图通过使用self-join将其与自身进行比较,以便能够检索共享相同RegCode和不同AdmissionID且具有相同admissionate(不包括小时和分钟)的记录

 AdmitDate      AdmissionID RegCode          FirsName
6/16/2015 11:15   1370       JB01.000000001  Eric
6/16/2015 15:24   1393       JB01.000000001  Eric
6/16/2015 18:17   1400       JB01.000000001  Eric
6/17/2015 10:55   1445       JB01.000008751  Sara
7/15/2015 15:51   2726       JB01.000000879  ellen
7/20/2015 10:30   2781       JB01.00000147   maison 
8/18/2015 15:07   4143       JB01.00000879   jeffery
12/23/2015 10:15  12341      JB01.00000850   jordan
5/31/2016 13:28   25406      JB01.00000545   leen
2/16/2017 9:49    45999      JB01.00000548   joseph
例如,它应该检索Eric,因为他有多个记录具有相同的许可日期,忽略小时和分钟以及RegCode,但不同的许可ID

AdmitDate        AdmissionID    RegCode         FirstName
6/16/2015 11:15    1370       JB01.000000001    Eric
6/16/2015 15:24    1393       JB01.000000001    Eric
6/16/2015 18:17    1400       JB01.000000001    Eric
所以基本上,我试图检索具有多个相同日期的同一RegCode的AdmissionID的记录, 我遇到了AdmitDate的问题,因为它还捕获小时和分钟,并且在使用别名进行子查询时,使用Datepart分离AdmitDate,我无法在select and group by中使用别名

我希望我简单地解释一下,因为我对SQL不太熟悉。如果您使用SQL Server,我们将非常感谢您的帮助

select *, 
count(AdmissionID) over(partitionBy AdmitDateDate, RegCode, FirstName) as [count]
from 
   (select *, cast(AdmitDate as Date) [AdmitDateDate] from <yourTable>) o 
如果使用SQL Server:

select *, 
count(AdmissionID) over(partitionBy AdmitDateDate, RegCode, FirstName) as [count]
from 
   (select *, cast(AdmitDate as Date) [AdmitDateDate] from <yourTable>) o 
使用SQL Server

SELECT  DISTINCT p.* 
FROM    <yourtable> AS p
    INNER JOIN <yourtable> AS c ON c.RegCode = p.RegCode AND c.AdmissionID <> p.AdmissionID AND CAST(c.AdmitDate AS date) = CAST(p.AdmitDate AS date)
使用SQL Server

SELECT  DISTINCT p.* 
FROM    <yourtable> AS p
    INNER JOIN <yourtable> AS c ON c.RegCode = p.RegCode AND c.AdmissionID <> p.AdmissionID AND CAST(c.AdmitDate AS date) = CAST(p.AdmitDate AS date)

用你正在使用的数据库标记你的问题。用你正在使用的数据库标记你的问题。