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

Sql 分组依据,每条记录一行

Sql 分组依据,每条记录一行,sql,sql-server,group-by,Sql,Sql Server,Group By,我的数据与此类似: ID | Order# | Transfer# 1 | Abc | 123a 2 | Abc | 456b 3 | Abc | 123a 4 | Abc | NULL 5 | Def | 123c 6 | Def | 456d 7 | Def | 123c 8 | Def | NULL 我想运行一个返回1行的查询,选择哪一个传输并不重要(null除外) 如果

我的数据与此类似:

ID | Order# | Transfer# 
1  | Abc    |   123a  
2  | Abc    |   456b 
3  | Abc    |   123a  
4  | Abc    |   NULL 
5  | Def    |   123c 
6  | Def    |   456d 
7  | Def    |   123c 
8  | Def    |   NULL 
我想运行一个返回1行的查询,选择哪一个传输并不重要(null除外)

如果我运行此查询:

SELECT order#,
  transfer#
FROM coitem
WHERE order#   ='abc'
AND transfer# IS NOT NULL
GROUP BY order# ,
  transfer#
它返回:

Order# | Transfer# 
Abc    |   123a
Abc    |   456b 
Def    |   123c 
Def    |   456d 
是否有一种方法只能返回1行,如下所示:

Order# | Transfer# 
Abc    |   456b  
Def    |   123c
我的目标是通过一个查询查看系统中所有订单的前1名转账

谢谢

您可以将此功能用于以下目的

select * from (
select [Order], Transfer,
ROW_NUMBER() OVER(PARTITION BY Transfer ORDER BY Transfer) AS rn
from tbl1 ) xxx
where rn = 1 and Transfer is not null;

有几种方式可以表达这一点,但对我来说,最具可读性的方式是:

SELECT
   order#,
   MAX(transfer#) AS Transfer#
FROM coitem
WHERE transfer# IS NOT NULL
GROUP BY order#

我认为这与您描述的想法相符。

一个查询示例(组大小为1)感谢Jamie,我尝试过,不幸的是,有些订单中有字母,max无法正常工作max通常适用于字符串(
varchar
)以及数字。Microsoft SQL server?