在SQL Server中,不同的列每月应有一个日期

时间:2019-03-19 19:04:32

标签: sql-server tsql

我的表格有Name, EmpName, Date列。对于不同的NameEmpName值,Date每月应仅为一个值

例如:

 Name EmpName Date
 -----------------------
 abc   emp1   3/19/2018
 abc   emp1   3/22/2018  (This record should be rejected)
 xyz   emp2   3/15/2018   valid record

我写了这样的东西

SELECT 
    name, empname,
    ROW_NUMBER() OVER (PARTITION BY YEAR(date), MONTH(date) ORDER BY date DESC) 

我被困在写CASE声明

1 个答案:

答案 0 :(得分:1)

您可以使用row_number()

select top (1) with ties t.*
from table t
order by row_number() over (partition by name, empname, year(date), month(date) order by date);

但是,基于示例数据,简单聚合也可以:

select name, empname, min(date)
from table t
group by name, empname, year(date), month(date);