Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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 如何从具有重复值的列表中获取最新日期和总注册数_Sql_Sql Server_Tsql_Date_Greatest N Per Group - Fatal编程技术网

Sql 如何从具有重复值的列表中获取最新日期和总注册数

Sql 如何从具有重复值的列表中获取最新日期和总注册数,sql,sql-server,tsql,date,greatest-n-per-group,Sql,Sql Server,Tsql,Date,Greatest N Per Group,我有一份学校名单。有重复的DISTSCH,我需要带/和相应totalenrollmentsEQ的最近一周的行 选择DATACOLLECTIONWEEK、districtname、DISTSCH、totalenrollmentsEQ 从DB.SCHEMA.TEST 其中DistrictName如“District1” 和“选择DISTSCH”中的DISTSCH 从DB.SCHEMA.TEST 其中DistrictName如“District1” 按地区分组 拥有count*>1您可以使用row\

我有一份学校名单。有重复的DISTSCH,我需要带/和相应totalenrollmentsEQ的最近一周的行

选择DATACOLLECTIONWEEK、districtname、DISTSCH、totalenrollmentsEQ 从DB.SCHEMA.TEST 其中DistrictName如“District1” 和“选择DISTSCH”中的DISTSCH 从DB.SCHEMA.TEST 其中DistrictName如“District1” 按地区分组 拥有count*>1

您可以使用row\u number来获取每个distsch的最新记录,这是通过对列数据的排序\u collection\u week确定的:

另一个典型的解决方案是使用相关子查询进行筛选:

select t.*
from mytable t
where t.data_collection_week = (
    select max(t1.data_collection_week) from mytable t1 where t1.distsch = t.distsch
)
您可以使用row_number获取每个distsch的最新记录,具体取决于每周对列数据的排序:

另一个典型的解决方案是使用相关子查询进行筛选:

select t.*
from mytable t
where t.data_collection_week = (
    select max(t1.data_collection_week) from mytable t1 where t1.distsch = t.distsch
)

我想这就是你想要的:

SELECT MAX(DATACOLLECTIONWEEK)max_week
, districtname
, DISTSCH
,SUM(totalenrollmentsEQ)total
FROM DB.SCHEMA.TEST
WHERE DistrictName LIKE 'District1'
AND DISTSCH IN (SELECT DISTSCH
                FROM DB.SCHEMA.TEST
                WHERE DistrictName LIKE 'District1'
                GROUP BY DISTSCH
                HAVING COUNT(*) > 1)
GROUP BY districtname
, DISTSCH

我想这就是你想要的:

SELECT MAX(DATACOLLECTIONWEEK)max_week
, districtname
, DISTSCH
,SUM(totalenrollmentsEQ)total
FROM DB.SCHEMA.TEST
WHERE DistrictName LIKE 'District1'
AND DISTSCH IN (SELECT DISTSCH
                FROM DB.SCHEMA.TEST
                WHERE DistrictName LIKE 'District1'
                GROUP BY DISTSCH
                HAVING COUNT(*) > 1)
GROUP BY districtname
, DISTSCH

请以表格形式提供您的样本数据。另外,请向我们展示您期望的结果。请以表格形式提供您的样本数据。也请告诉我们你期望的结果。我非常感谢你,这正是我所需要的,谢谢,谢谢,谢谢!欢迎@Hakka-4!如果我的答案正确回答了您的问题,请单击复选标记。你也可以用上面的箭头向上投一票。我非常感谢你,这正是我所需要的,谢谢你,谢谢你,谢谢你!欢迎@Hakka-4!如果我的答案正确回答了您的问题,请单击复选标记。您也可以使用上箭头向上投票。