Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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 server SQL Server分组依据仅显示第一个匹配项_Sql Server - Fatal编程技术网

Sql server SQL Server分组依据仅显示第一个匹配项

Sql server SQL Server分组依据仅显示第一个匹配项,sql-server,Sql Server,我有下表,想分组 [name] [phone] doniking 081222222222 doni 081222222222 Bambang Gentholet 081111111111 Bambang 081111111111 我想得到这个结果: [name] [phone] doniking 081222222222 Bambang Genthole

我有下表,想分组

[name]             [phone]
doniking           081222222222
doni               081222222222
Bambang Gentholet  081111111111
Bambang            081111111111
我想得到这个结果:

[name]             [phone]
doniking           081222222222
Bambang Gentholet  081111111111
试试这个

SELECT [name],[phone] 
FROM (
      SELECT *,Row_Number() Over (Partition By phone Order By (Select Null)) AS RN
      FROM Table1
      ) AS T
Where RN = 1
OFFSET n ROWS
SELECT name, 
   phone 
FROM  (SELECT *, 
          Row_number() 
            OVER( 
              partition BY phone 
              ORDER BY name) row_num -- or you can have order by (select null)
   FROM   table1) t 
WHERE  row_num = 1 
您可以用自定义值替换n

试试这个

SELECT MAX(name), phone  FROM <TableName> group by phone
逐个电话从通话组中选择MAX(姓名)
编辑:用于偏移

SELECT MAX(name), phone  FROM <TableName> group by phone
order by phone offset 10 rows 
FETCH NEXT 5 ROWS ONLY;
逐个电话从通话组中选择MAX(姓名)
电话订购偏移量10行
只取下5行;
有关更多详细信息。

请尝试此选项

SELECT [name],[phone] 
FROM (
      SELECT *,Row_Number() Over (Partition By phone Order By (Select Null)) AS RN
      FROM Table1
      ) AS T
Where RN = 1
OFFSET n ROWS
SELECT name, 
   phone 
FROM  (SELECT *, 
          Row_number() 
            OVER( 
              partition BY phone 
              ORDER BY name) row_num -- or you can have order by (select null)
   FROM   table1) t 
WHERE  row_num = 1 

如果我添加一个列类型日期,如何基于最新日期获取名称?如何将偏移量应用于该查询?检查我的更新答案忘了说我正在使用SQL2005如何将偏移量应用于该查询?应用偏移量是什么意思?你能详细说明你要找的是什么吗?我要把需要限制和偏移的结果分页。不幸的是,我的SQL2005不支持OFFSET关键字。因此,您希望仅对最终结果应用限制和偏移量,还是在筛选出重复项之前应用限制和偏移量?如何将偏移量应用于该查询?