Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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 - Fatal编程技术网

Sql 如何避免在行中显示重复的值

Sql 如何避免在行中显示重复的值,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个查询,其中我尝试显示一周中两个站点之间最频繁的行程: SELECT startday AS Day, start_station_name, start_station_id, end_station_name, end_station_id, count(*) AS trip_counts FROM table GROUP BY startday, start_station_name, end_station_name, start_station_id, end_station_i

我有一个查询,其中我尝试显示一周中两个站点之间最频繁的行程:

SELECT startday AS Day, start_station_name, start_station_id, end_station_name, end_station_id, count(*) AS trip_counts
FROM table
GROUP BY startday, start_station_name, end_station_name, start_station_id, end_station_id
ORDER BY trip_counts DESC
这是我当前的输出:

我不想重复具有相同“日期”的行,我只想按天显示具有较大行程计数的行。

第8行不应显示,因为第1行已经有值“星期一”,且其行程计数值更大。

您可以使用窗口功能:

SELECT s.*
FROM (SELECT startday AS Day, start_station_name, start_station_id,
             end_station_name, end_station_id, 
             COUNT(*) AS trip_counts,
             ROW_NUMBER() OVER (PARTITION BY startday ORDER BY COUNT(*) DESC) as seqnum
      FROM table
      GROUP BY startday, start_station_name, end_station_name, start_station_id, end_station_id
     ) s
WHERE seqnum = 1
ORDER BY trip_counts DESC

我只需将您的查询转换为视图(以便下次更容易访问):

然后,您可以轻松地使用以下查询仅访问具有最大行程计数的条目:

SELECT *, MAX(trip_counts) trip_counts
FROM vw_name
GROUP BY day

根据问题指南,请不要发布代码、数据、错误消息等的图像-复制或在问题中键入文本。请保留图像用于图表或演示渲染错误,这些问题无法通过文本准确描述。以下任一答案是否解决了您的问题?如果是,请接受。
SELECT *, MAX(trip_counts) trip_counts
FROM vw_name
GROUP BY day